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로 선언되어야 한다. 인터페이스는 표준화된 공통기능을 가지며 서로 다른 클래스를 연결시켜주는 징검다리라고 볼 수 있다.
이상으로 용어를 간략하게 정리해 보았다. 또 필요한게 있으면 추가로 정리해야겠다.^^