객체지향(Object-Oriented) (1과목)
객체지향의 개요
- 주요 구성 요소
- 주요 개념
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polymorphism)
- 연관성(Realtionship)
객체(Object)
- 독립적으로 식별 가능한 이름을 가지고 있다.
- 데이터와 데이터를 처리하는 함수를 묶어 놓은 하나의 소프트웨어 모듈
- 객체는 일정한 기억장소를 가지고 있다.
- 객체는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행한다.
클래스(Class)
- 공통된 속성과 연산을 갖는 객체의 집합
- 속성과 연산을 정의하고 있는 틀
- 흔히 붕어빵 틀로 많이 비유된다.
캡슐화(Encapsulation)
- 개발자는 객체가 가진 캡슐화라는 특성으로 인해 데이터를 개발자와 클라이언트에게 각각 보여주고 싶은 만큼 보여줄 수 있다.
- 자바에선 접근 제어자(Public, Protected, default, private)로 인해 해당 수행이 가능해진다.
상속(Inheritance)
- 데이터를 확장하는 방식이다.
- 부모 클래스에서 자식 클래스로 모든 속성과 하위 연산을 물려주는 형식
- 다중 상속 : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는다.
다형성(Polymorphism)
- 상속 받은 메서드가 다양한 형태를 띄지만 정해진 규칙 내에서만 다양한 형태를 띌 수 있다.
- 부모가 String 형태로 return되는 함수가 있다면 자식1은 String 형태를 준수하면서 'A'를 return하고 자식2는 String 형태를 준수하면서 'B'로 정의할 수 있다는 것이다.
연관성(Relationship)
- 두 개 이상의 객체(클래스)들이 상호 참조하는 관계
- 연관화, 분류화, 집단화, 일반화, 특수화/상세화 가 있다.
- is member of
- 연관화 : 두 개 이상의 객체가 상호 관련있음.
- is instance of
- 분류화 : 동일한 형의 특성을 갖는 객체들을 모아 구성
- is part of
- 집단화 : 관련있는 객체들을 묶어 하나의 상위 객체를 구성
- is a
- 일반화 : 공통적인 성질들로 추상화 한 상위 객체를 구성
- 특수화/상세화 : 상위 객체를 구체화하여 하위 객체를 구성