728x90
객체지향 프로그래밍(OOP; Object-Oriented Programming)
현실 세계의 사물을 모델링하여 소프트웨어를 개발하는 방법.
프로그램을 "객체"의 모임으로 보고, 객체들 간의 상호 작용을 통해 프로그램을 구성한다.
크게 클래스, 객체, 메서드로 구성된다.
클래스(class)
같은 종류의 집단에 속하는 속성과 행위를 정의한 것(객체들의 청사진)
객체(object)
데이터(상태)와 데이터를 처리하는 메서드(행위)를 캡슐화한 하나의 SW 모듈.
클래스로 의해 생성된 객체를 인스턴스(instance) 라고 하며,
클래스로부터 새로운 객체를 생성하는 것을 인스턴스화 라고 한다.
- 데이터: 속성, 상태, 변수, 상수, 자료구조 라고도 함
- 메서드(method): 객체가 수행하는 기능으로 객체가 갖는 데이터를 처리하는 알고리즘
- 메시지: 객체에게 어떤 행위를 하도록 지시하는 명령
- 연관성 : 두 개 이상의 객체들이 서로 참조하는 관계
is member of 연관화 2개 이상의 객체가 서로 연관되어 있다 is instance of 분류화 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것 is part of 집단화 관련 있는 객체들을 묶어 하나의 상위 객체를 구성 is a 일반화 공통 성질들로 추상화한 상위 객체를 구성하는 것 is a 특수화/상세화 상위 객체를 구체화하여 하위 객체를 구성하는 것
특징
캡슐화 (Encapsulation)
객체의 데이터와 메서드를 함께 묶는 것. 이를 통해 데이터의 접근을 제한하여 객체 내부의 상태를 보호한다.
상속 (Inheritance)
부모 클래스의 속성값을 물려받아 자식 클래스를 생성하는 개념이며,
자식 클래스는 속성값들을 추가하거나 수정하여 사용할 수 있다
다형성 (Polymorphism)
타입이 다르면 동일한 메서드명으로 정의 가능하며, 다른 동작을 할 수 있다.
추상화 (Abstraction)
동작에 연관이 되지 않는 속성들은 불필요하므로 속성 위주가 아닌 동작 위주로 정의하는 작업
복잡한 시스템을 단순화하여 객체와의 상호작용을 쉽게 하고, 코드의 재사용성 및 유지보수성을 향상시킬 수 있다.
'CS' 카테고리의 다른 글
[JAVA] UML(Unified Modeling Language) (1) | 2023.10.19 |
---|---|
[Java] 객체지향 분석(OOA) 및 설계(OOD) 및 설계원칙(SOLID) (0) | 2023.10.19 |
[Spring] PSA(Portable Service Abstraction) (0) | 2023.10.18 |
[OS] 캐시의 지역성 (0) | 2023.10.07 |
[OS] 가상 메모리(Virtual Memory System)란? (1) | 2023.10.07 |