객체(Object) 는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는
공간을 의미하며 값을 저장할 변수
와 작업을 수행 할 메소드
서로 연관된 것들끼리 묶어서 만든 것
자신의 속성
을 가지고 있고, 다른 것과 식별 가능한 것
을 말한다.
"OOP 관점에서 클래스의 타입으로 선언되었을 때 객체
라고 부른다."
클래스(Class) 객체를 만들기 위한
설계도
또는 틀
이라고 한다.
"연관되어 있는 변수와 메서드의 집합"
인스턴스(Instance) 는 클래스를 바탕으로 실체화
하여 메모리에 할당된 구체적인 실체
"OOP 관점에서 객체가 메모리에 할당되어 실제 사용될 때 인스턴스
라고 부른다"
객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서
필요한 데이터를 추상화
시켜 상태와 행위를 가진 객체
로 만들고, 객체들간의 상호작용을 통해 로직을 구성
하는 프로그래밍 방법
추상화
속성
과 행위
를 추출 하는 것공통의 속성과 행위
를 찾아서 타입을 정의하는 과정불필요한 정보는 숨기고 중요한 정보만을 표현
함으로써 프로그램을 간단하게 만드는 것캡슐화
변수와 함수를 하나로 묶는 것
)정보은닉
을 활용 할 수도 있다. ( 접근 제어자의 활용
)상속
하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말함
다형성
상위 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있다.
장점
클래스 단위로 모듈화
시켜서 개발하기 때문에 업무 분담이 편리
하고 대규모 소프트웨어 개발에 적합
하다.클래스 단위로 수정이 가능
하기 때문에 유지 보수가 편리
하다.클래스를 재사용하거나 상속을 통해 확장
함으로써 코드 재사용이 용이
하다.단점
처리속도가 상대적으로 느리다
.객체의 수가 많아짐
에 따라 용량이 커질 수 있다
.설계시 많은 시간과 노력이 필요
하게 될 수 있다.객체 지향적으로 설계하기 위해 SOLID 라 불리는 다섯 가지 원칙
단일 책임 원칙 SRP (Single Responsibility Principle)
하나의 클래스
는 단 하나의 책임
만 가져야 한다.개방-폐쇄 원칙 OCP (Open/Closed Principle)
확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
리스코프 치환 원칙 LSP (Liskov Substitution Principle)
정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
인터페이스 분리 원칙 ISP (Interface Segregation Principle)
- 범용 인터페이스 하나보다
클라이언트를 위한 여러 개의 인터페이스로 구성하는 것이 좋다.
인터페이스로 분리함으로써
각 클라이언트가 사용하지 않는 인터페이스에 변경이 있어도 영향을 받지 않도록 만들어야 한다.
의존관계 역전 원칙 DIP (Dependency Inversion Principle)
추상화에 의존해야지 구체화에 의존하면 안됨