<객체지향>
- 객체의 특성
- 객체마다 고유한 특성(state)와 행동(behavior)를 가짐
- 다른 객체들과 정보를 주고 받는 등, 상호작용하면서 존재
- Abstraction(추상화) ←4장
- 유형/무형의 객체를 구성
- 변수나 함수를 뽑아냄 (실제가 아닌 추상화됨)
- Encapsulation(캡슐화) ←4장
- 추상화 후 만들어진 객체(Type별 Clusturing)를 클래스라는 캡슐로 캡슐화
- 내부를 볼 수 없고 접근할 수 없게 함; 정보은닉을 통한 간접적 접근
- 클래스: 객체 모양을 선언한 틀
- 객체: 클래스 모양대로 생성된 실체(Instance)
- 객체 내 데이터에 대한 보호, 외부 접근 제한
- 객체 외부에서는 비공개 멤버(필드, 메소드)에 직접 접근할 수 없음
- 공개된 메소드를 통해 비공개 멤버 간접적 접근
- Inheritance(상속) ← 5장
- 상위 개체의 속성이 하위 개체에 물려짐
- 하위 객체가 상위 개체의 속성을 모두 가지는 관계
- 자식 클래스가 부모 클래스의 속성 물려받고, 기능 확장
- 부모 클래스: Super Class
- 자식 클래스: Serve Class (하위클래스) → 부모 클래스를 재사용하고 새로운 특성 추가
- Polymorphism(다형성) ←5장
- 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현
- 다형성 사례:
- 메소드 오버로딩: 같은 이름이지만 다르게 작동하는 여러 메소드
- 메소드 오버라이딩: 슈퍼 클래스의 메소드를 서브 클래스마다 다르게 구현
- 객체 지향 언어의 목적
- 소프트웨어의 생산성 향상
- 소프트웨어의 생명 주기 단축
- 객체 지향 언어
- 객체화, 캡슐화, 상속, 다형성 등 소프트웨어 재사용을 위한 여러 장치 내장
- 소프트웨어 재사용과 부분 수정이 빨라 다시 만드는 부담을 대폭 줄임 → 소프트웨어 생산성 향상
- 실세계에 대한 쉬운 모델링
- 컴퓨터 초기 시대의 프로그래밍: 수학 계산/통계 처리를 하는 등 처리 과정, 계산 절차 중요
- 현대의 프로그래밍:
- 컴퓨터가 산업 전반에 활용
- 실세계에서 발생하는 일을 프로그래밍
- 절차나 과정보다 물체들의 상호 작용으로 묘사하는 것이 용이
- 객체 지향 언어
- 실세계의 일을 보다 쉽게 프로그래밍하기 위한 객체 중심적 언어
- 절차 지향 vs 객체 지향
- 절차 지향 프로그래밍
- 작업 순서 표현
- 작업을 함수로 작성한 함수들의 집합
- 객체 지향 프로그래밍
- 객체들간의 상호작용으로 표현
- 클래스 혹은 객체들의 집합으로 프로그램 작성
원본 노션 링크
https://believed-poinsettia-f0f.notion.site/Orientation-974d21fa009243fbb7731a5bf9c66224?pvs=4