본문 바로가기
학습 log (이론)/pattern

'Object-Oriented' 패턴 기초

by abbear25 2016. 11. 28.

객체지향의 4가지 특징

상속성(Inheritance) / 캡슐화(Encapsulation) / 다형성(polymorphism) 

추상화(Abstraction)

*추상화를 위하여 두 가지 특징이 존재

장점, 재사용성 / 확장성 / 이식성 / 유지보수의 편리성


메소드 중복 정의(overloading)

오버해서 로딩한다, 비슷한 업무지만 다른 양식을 주면서 일을 더 시킴


메소드 재정의(overriding)

부모 위에 태운다, 부모를 새로 정의

부모로부터 자식이 태어났지만 자식의 모든 것을 부모가 컨트롤 할 수 없다


추상화를 사용하는 이유

'갑', '을', '병' 이 존재할 때 

'갑'이 인터페이스를 정의하면

'을'은 인터페이스에 따라서 메소드를 구현

'병'은 '을'이 어떻게 구현했는지 상관 없이 '갑'이 정의해둔 인터페이스로 접근, 활용 할 수 있음

즉 인터페이스, 추상화는 서로 간의 약속이며

선언부(변경 가능성이 없는 부분)와 구현부(변경 가능성 있는 부분)가 분리되고 선언부를 통해서로 접촉하게 됨으로 구현부에 따른 서로의 의존성을 제거, 신뢰를 확보하게 됨   


추상화 #1, abstract

구현부가 없는 껍데기 메소드는 추상 메소드로 선언

추상 메소드를 가진 클래스는 추상 클래스로 선언 할 수 밖에 없다

추상 클래스로는 객체를 생성할 수 없다, 따라서 상속해서 사용해야 함

추상화된 속성은 상속됨, 메소드 재정의 전제 조건은 상속

추상 클래스를 상속받은 클래스가 객체 생성이 가능하려면 추상 메소드를 반드시 재정의

*상속 관계 = is type, is a, is kind로 표현

김밥 is a 음식 -> 음식 a = new 김밥();

비빔밥 is a 음식 -> 음식 a = new 비빔밥();

= Heterogeneous Collection(부모 타입의 객체를 보관할 수 있는 다형성의 특징)


추상화 #2, interface

상속을 통한 추상 레벨을 적용할 수 없는 경우 사용

오직 추상화된 메소드 형태로만 존재 가능


abstract vs interface

abstract는 extends 키워드를 사용하여 상속하는 개념, 한 부모만 상속 가능

interface는 implements 키워드를 사용하여 추상 메소드를 그대로 상속, 재정의하는 개념

여러 부모 상속 가능(다중 상속)




반응형

'학습 log (이론) > pattern' 카테고리의 다른 글

'디자인 패턴' 패턴 종류  (0) 2017.02.07
'객체 직렬화 및 RMI' 'Prototype 패턴' #1  (0) 2016.12.13