Skip to content

Latest commit

 

History

History
120 lines (98 loc) · 7.94 KB

obj-oriented-terms.md

File metadata and controls

120 lines (98 loc) · 7.94 KB

객체지향 관련 용어 정리 (JAVA)

  • 클래스(Class)

    흔히 객체의 청사진이라고 많이 정의한다.
    상태와 행위를 갖는 자바의 기본 단위이다.
    한마디로 건물(객체)를 지을 때 필요한 설계도라고 생각하면 된다.
    완성된 건물이 자바에서는 객체(Object)이다.

  • 상태(State)와 행위(Behavior)

    어떤 사물을 나타낼 때에는 상태화 행위로 구분하여 표시하는 것이 가능하다.
    자바에서 상태클래스나 인스턴스 변수로, 행위메서드로 표현할 수 있다.

  • 객체(Object)

    객체지향 프로그래밍의 기본단위,
    데이터(실체) 변수(상태)와 메서드(행위)를 모두 포함하고 있다.
    클래스는 사물의 단위를 의미하지만,
    객체는 각 사물을 의미한다.
    예를 들면, 책은 클래스고 <자바의 신>은 객체라고 볼 수 있다.

  • 인스턴스(Instance)

    한 클래스의 특정한 객체를 의미
    일반적으로 어떤 집합에서 그 집합의 개별적인 요소를 인스턴스라고 한다.

  • 인스턴스화(Instantiate)

    클래스에서 인스턴스를 생성시키는 것을 말한다.
    자바에서 new를 사용해 클래스를 복제하여 새로운 객체를 생성하는 것
    흔히 인스턴스화 라고 한다.

  • 생성자와 소멸자

    객체는 생성되고 소멸될 때 호출되는 특별한 메서드를 가지고 있다.
    이 메서드를 생성자와 소멸자라고 한다.
    생성자는 객체를 초기화하거나 설정하고
    소멸자는 객체를 삭제하고 정리한다.

  • 멤버(Member)

    객체 혹은 클래스의 변수나 메서드를 의미

  • 변수(Variable)

    값이 저장된 기억장소.
    객체는 변수에 자신의 상태를 저장하고, 변수는 식별자로 명명된다.

  • 식별자(Identifier)

    프로그래머가 프로그램에서 사용하는
    자료의 항목, 즉 변수, 함수, 상수, 배열, 클래스, 메서드 등에 부여하는 이름을 말한다.

  • 메서드(Method)

    메서드는 특정한 일을 수행하는 행위나 동작을 의미한다.
    일반적으로 함수와 같은 의미지만 객체지향에서는 차이점이 있다.
    static(Class) 메서드와 instance 메서드 2종류가 있으며,
    static 메서드는 객체를 생성하지 않아도 사용할 수 있지만,
    instance 메서드는 객체를 생성해야만 사용 가능하다.

  • 멤버 변수(Member Variable)

    클래스나 객체의 멤버로 클래스 내에서 선언된 변수를 멤버변수라고 한다.
    멤버변수에는 static(Class) 변수와 instance 변수가 있으며 static(Class) 변수는 모든 객체가 공통적으로 사용하는 변수이며,
    instance 변수는 각 객체들마다 따로 생성되어 개별적으로 사용하는 변수이다.

    • 지역변수 는 메서드 내에서 선언되어 메서드 내부에서만 사용 가능한 변수를 말하며, 멤버 변수는 메서드나 생성자 바깥에 선언되어야 하며 클래스 전체 영역에서 사용하는 변수를 말한다.
  • 멤버 함수(Member Function)

    클래스 내에서 선언된 함수를 말하며, 멤버 변수들을 통제하기 위하여 사용한다.
    public, protected, private와 같은 접근 제한자를 사용한다.

  • 접근 제한자

    1. public : 모든 접근 허용
    2. protected : 같은 패키지에 있는 객체와 상속관계의 객체들만 허용
    3. default : 같은 패키지에 있는 객체들만 허용
    4. private : 현재 객체 내에서만 허용
  • 추상화(Abstraction)

    어떤 대상(객체)을 표한하는데 있어서 일부 특성들만 표현하는 것으로 추상화를 하게되면 목적을 위해서 필요한 부분을 찾을 수 있다.
    개별적인 대상들의 공통점을 모아 클래스 또는 인터페이스화 하는 것이라 생각하면 된다.
    사람을 예로 들면,
    철수와 영희는 각자 고유한 특성을 가지고 있지만
    이런 점을 제외하고 이름/나이/성별/주소 등 동일한 특성을 모아서 사람이라는 클래스를 만든다면 이 과정을 추상화라고 할 수 있다.
    (추상 클래스는 객체가 가지는 특성들을 추상화시켜 놓았을 뿐이므로 이에 대하여 구체화가 필요하다
    즉, 온전한 클래스가 아니므로 객체를 생성할 수 없다.)

  • 정보 은닉(Information hiding)

    1. 정보 은닉은 객체지향 언어가 만들어진 목적에 해당하는 개념이다.
      모든 개념 중 가장 중요한 개념이라고 보면 된다.
      정보 은닉을 알면 나머지 개념이 왜 생겨난 것인지 이해하고 알 수 있다.
    2. 정보은닉은 객체지향 언어를 설계한 모든 목적을 달성하기 위한 특성이다.
      객체화 한다는 의미로서 캡슐화와 상속은 정보은닉을 가능하게 하기 위한 수단이다.
  • 캡슐화(Encapsulation)

    1. 연관된 상태행위를 결정하는 기능을 묶어주는 것을 말한다.
    2. 정보 은닉의 하위 개념 중 하나로써, 객체의 필드를 비공개(private)로 하고, 꼭 필요한 경우에만 메소드 공개를 설정하는 것.
      다시 정리하면 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게 내부적인 접근을 허용하지 않는 대신 사용의 편의성을 제공해주는 것 이다.
  • 상속(Inheritance)

    상위(부모) 클래스의 변수와 메서드에 대한 사용권을 갖는 것을 말한다. (extends, implements)
    하위 클래스는 상위 클래스가 가지고 있는 모든 특성들을 상속하여 사용할 수 있다.
    상속의 사용은 재사용성을 높여주며 세부적인 개념으로 단계적인 정의가 가능하게 한다.

  • 다형성(Polymorphism)

    하나의 객체가 서로 다른 타입과 기능으로 동작할 수 있음을 의미.
    상위 클래스에서 파생된 하위 클래스들의 기능이 각각 다를 수 있다는 말

  • 메서드 재정의(Overriding)

    상위 클래스에 선언되어 있는 메서드와 동일한 선언을 갖니만 구현이 다른 것을 의미한다.
    재정의된 메서드는 다른 동작을 하므로 이용하는 객체는 재정의되지 않은 메서드와 동일하게 취급을 할 수 있으므로 다형성을 이용하는 수단으로 볼 수 있다.

  • 메서드 오버로딩(Overloading)

    메서드의 이름은 동일하지만, 매개 변수를 다르게 하는 것을 의미한다.
    자바에서 메서드 중복정의는 허용하지만 연산자의 중복은 허용하지 않는다.
    오버로딩이 추가라면 오버라이딩은 변경으로 볼 수 있다.
    (자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.)

  • 추상클래스(Abstract Class)

    완전하지 않은 클래스를 의미하며, 반드시 하나 이상의 추상 메서드를 포함하여야 하며 객체를 생성 할 수 없다.
    abstract라는 키워드를 추가하여 클래스 및 메서드를 선언한다.
    일반 메서드도 포함 할 수 있으며, 주로 슈퍼클래스로 사용한다.

  • 인터페이스(Interface)

    추상클래스의 극단적인 경우라고 생각하면 된다.
    인터페이스는 추상 메서드로만 이루어지며, 선언만 할 수 있다.
    인터페이스를 사용하기 위해서는 implements 키워드를 사용하여야 하고,
    인터페이스 내의 메서드는 public abstract로 선언되어야 한다.
    인터페이스는 표준화 된 공통기능을 가지며 서로 다른 클래스를 연결시켜주는 징검다리라고 볼 수 있다.