프로그맹 언어
는 일반적으로 절차적 언어 라고
부름 (C,포트란 등)클래스
라고 부르는 데이터 모델의 청사진을 사용해 코드 작성일종의 원형(orginal form)으로, 객체를 생성하기 위한 아이디어나 청사진으로 세부사항(속성)이 들어가 있지 않다.
-> 세부 사항을 넣는다면 객체가 된다.
클래스는 객체를 만들기 위한 생성자(constructor) 함수
를 포함
클래스를 통해 만들어진 객체
객체
로 그룹화됨데이터와 기능이 함께 있다
라는 원칙에 따라 메서드와 속성이 존재Encapsulation (캡슐화)
- 데이터와 기능을 하나의 단위로 붂는 것
- 은닉화(hiding): 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
-> 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 핋요한 메서드만 노출
-> 장점 : 객체 내 메서드의 구현만 수정하고, 노출된 메서드를 사용하는 코드의 흐름은 바뀌지 않도록 만들 수 있다.
-> 단점 : 데이터의 형태가 바뀔때는 코드의 흐름에 큰 영향을 미치게 된다.=- 느슨한 결함(Loose Coupling): 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미
Abstraction (추상화)
- 내부 구현은 복잡하지만 실제로 노출되는 부분은 단순하게 만드는 개념
- 캡슐화와 다른점
-> 캡슐화 : 코드나 데이터의 은닉에 포커스
-> 단순한 이름으로 정의하는 것에 포커스- 클래스 정의 시, 메서드의 속성만 정의한 것을
인터페이스
라고 부름 -> 초상화의 본질
Inheritance (상속)
- 부모 클래스의 특징을 자식 클래스가 물려 받는 것 ->
기본클래스(base class)
의 특징을파생 클래스(derived class)
가 상속받는다.
- 그림과 같이 Student클래스는 Human클래스를 상속받을 수 있으며, 추가적으로 속성/메서드를 추가할 수 있다.
Polymorphism (다향성)
- 똑같은 메서드라 하더라고, 다른 방식으로 구현될 수 있다
-> 만약 언어 자체에서 다향성을 제공하지 않는다면 부모(기본)클래스에 종류별로 분기를 시켜서 하나하나 다르게 만들어야 한다.