개요
설계 방법론
객체라는 기본 단위로 나누고 객체간의 상호작용을 서술하는 방식
객체란 자료와 행동의 묶음
객체지향은 특정 언어가 아니라 개념
상향식(Bottom-up) 문제 해결
작은 문제를 해결하는 객체를 만든 후 객체들의 조합으로 큰 문제 해결
요소
추상화(abstraction)
목적과 관련이 없는 부분을 제거하고 공통된 부분만을 표현
캡슐화(encapsulation)
관련있는 데이터와 동작을 하나의 단위로 묶는 행위
정보 은닉(information hiding)
데이터나 동작을 감추는 행위
캡슐화에서 파생된 보조 개념
캡슐화와 같은 개념이 아님
상속(inheritance)
자식 클래스가 부모 클래스의 특성과 기능을 그대로 물려받는 것
오버라이딩
자식 클래스에서 기능만을 재정의
오버로딩과는 다름
다형성(polymorphism)
상황에 따라 다른 의미로 해석
서브타입 다형성
상위 클래스의 포인터나 참조변수 등이 하위 클래스의 객체를 참조
매개변수 다형성
타입을 매개변수로 받아 새로운 타입을 되돌려주는 기능
ex
임시 다형성
강제 다형성
직렬화(serialization)
역직렬화(deserialization)
원칙
SOLID(객체지향 5원칙)
SRP(Single Responsibility Principle)
단일 책임 원칙
객체는 오직 하나의 책임을 가져야 한다
OCP(Open-Closed Principle)
개방-폐쇄 원칙
객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다
LSP(Liskov Substitution Principle)
리스코프 치환 원칙
자식 클래스는 언제나 자신의 부모 클래스를 대체 가능
ISP(Interface Segregation Principle)
인터페이스 분리 원칙
클라이언트에서 사용하지 않는 메서드는 사용하면 안되는 원칙
DIP(Dependency Inversion Principle)
의존성 역전 원칙
추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안 된다는 원칙
클래스, 객체, 인스턴스
클래스
객체
인스턴스
메모리에 할당된 객체
선언되었을때는 객체, 객체가 new에 의해 메모리에 할당되었을때는 인스턴스
사람(클래스) - 손흥민(객체)
장점
코드 중복 최소화
역할 분담 명확화
재사용성 증가
가독성 증가
단점
개념을 기준으로 나누다보니 컴퓨터 친화적이지는 않음
Tags:
abstraction ,
deserialization ,
encapsulation ,
information hiding ,
inheritance ,
Object-Oriented Programming ,
OOP ,
polymorphism ,
serialization ,
SOLID
Categories:
methodology
Updated: May 13, 2022