JAVA 에서 객체지향 관련 용어를 정리해보자.(2)

매번 사용하고 개념을 알고 있다고 생각하는데 막상 설명하라면...음...하게 되더라는...

검색이 습관이라 그런가...

아래도 역시 검색으로 정리 + 자바의 신 책에서 발췌하여 정리한 내용이다.


14. 추상화(Abstraction)

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

 ( 추상클래스는 객체가 가지는 특성들을 추상화시켜 놓았을 뿐이므로 이에 대하여 구체화가 필요하다. 즉, 온전한 클래스가 아니므로 객체를 

   생성 할 수 없다. )


15. 정보 은닉(Information hiding)

 1) 정보 은닉은 객체지향 언어가 만들어진 목적에 해당하는 개념이다.

    (모든 개념 중에서 가장 중요한 개념이다믿음 소망 사랑 중 사랑이며, good, better, best 중에 best이다정보 은닉만 알면 나머지 개념이 

     왜 생겨  난 것인지를 알 수 있다.)

 2) 정보 은닉은 객체지향 언어를 설계한 모든 목적을 달성하기 위한 특성이다. "객체화" 한다는 의미로서의 갭슐화와 상속은 정보 은닉을 

    가능하게 하기위한 수단이다.

   출처: http://effectiveprogramming.tistory.com/entry/객체지향-용어-정리 [Effective Programming] )


16. 캡슐화(Encapsulation)

 1) 연관된 "상태"와 "행위"를 결정하는 기능을 묶어주는 것을 말한다. 

 2) 정보 은닉의 하위 개념 중 하나로써, 객체의 필드를 비공개(private)로 하고, 꼭 필요한 경우에만 메소드 공개를 설정하는 것.

    다시 정리하면 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게 내부적인 접근을 허용하지 않는 대신 사용의 편의성을 

    제공해주는 것이다.


17. 상속(Inheritance)

 상위(부모) 클래스의 변수와 메소드에 대한 사용권을 갖는 것을 말한다. ( extends, Implements ) 

 하위 클래스는 상위클래스가 가지고 있는 모든 특성들을 상속하여 사용할 수 있다. 상속의 사용은 재사용성을 높여주며 세부적인 개념으로 

 단계적인 정의가 가능하게 한다. 


18. 다형성(Polymorphism)

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


19. 메서드 재정의(Overriding)

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

  

20. 메서드 오버로딩(Overloading)

 메서드의 이름은 동일하지만, 매개 변수를 다르게 하는 것을 의미한다. 자바에서는 메서드의 중복정의는 허용하지만 연산자의 중복은 허용하지 않는다. 오버로딩이 추가라면 오버라이딩은 변경으로 볼 수 있다. 


21. 추상클래스(Abstract Class)

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


22. 인터페이스(Interface)

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


이상으로 용어를 간략하게 정리해 보았다. 또 필요한게 있으면 추가로 정리해야겠다.^^





JAVA 에서 객체지향 관련 용어를 정리해보자.

매번 사용하고 개념을 알고 있다고 생각하는데 막상 설명하라면...음...하게 되더라는...

검색이 습관이라 그런가...

아래도 역시 검색으로 정리 + 자바의 신 책에서 발췌하여 정리한 내용이다.


1. 클래스(Class)

 흔히 객체의 청사진(Blueprint) 이라고 많이 정의한다.  "상태" 와 "행위" 를 갖는 자바의 기본 단위이다. 

한 마디로 건물(객체)을 지을 때 필요한 설계도라고 생각하면 된다. 완성된 건물이 자바에서는 객체(Object) 이다.


2. 상태(State)와 행위(Behavior)

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


3. 객체(Object)

 객체 지향 프로그래밍의 기본 단위로 데이터(실체) 변수(상태)와 메서드(행위)를 모두 포함하고 있다. 

 클래스는 사물의 단위를 의미하지만, 객체는 각 사물을 의미한다. 예를 들면, 책은 클래스이고 <자바의 신>은 객체라고 볼 수 있다.


4. 인스턴스(Instance)

 한 클래스의 특정한 객체를 의미한다.

 일반적으로 어떤 집합에서 그 집합의 개별적인 요소를 인스턴스라고 한다.


5. 인스턴스화(Instantiate) 

 클래스에서 인스턴스를 생성시키는 것을 말한다. 

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


6. 생성자와 소멸자

 객체는 생성되고 소멸될 때 호출되는 특벽한 메서드를 가지고 있다.

 이 메서드를 생성자와 소멸자라고 한다. 생성자는 객체를 초기화하거나 설정하고 소멸자는 객체를 삭제하고 정리한다. 


7. 멤버(Member)

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


8. 변수(Variable)

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


9. 식별자(Identifier)

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


10. 메서드(Method)

 메서드는 특정한 일을 수행하는 행위나 동작을 의미한다. 일반적으로 함수와 같은 의미지만 객체지향에서는 차이점이 있다.

 static(Class) 메서드와 instance 메서드 2종류가 있으며, static 메서드는 객체를 생성하지 않아도 사용할 수 있지만, instance 메서드는 객체를 생성해야만 사용 가능하다.


11. 멤버 변수(Member Variable)

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

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


12. 멤버 함수(Member Function)

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


13. 접근 제한자

 1) public      : 모든 접근을 허용

 2) protected : 같은 패키지에 있는 객체와 상속관계의 객체들만 허용 

 3) default    : 같은 패키지에 있는 객체들만 허용

 4) private    : 현재 객체 내에서만 허용




 


 




 



+ Recent posts