현재 객체지향으로 사용하는 방법은 트랜드라고 할수가 있다.
객체지향 프로그래밍을 잘 숙달하고 잘 사용을 하면 코드에 대한 유지보수와 중복성을 줄일수 있으므로 개념 정리를 완벽하게 이해하고 넘어가야 한다.
객체지향 얄팍한 코딩->객체지향 개념
객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호 작용을 표현하고 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식을 말한다.
객체지향 프로그래밍의 특징
- 객체 지향 프로그래밍은 투상화, 캡슐화, 다향성, 상속성이라는 특징이있다.
추상화
- abstraction이란 복잡한 시스템으로부터 핵심적인 개념 혹은 기능을 간추려내는것을 뜻한다. i.e 후배 John이는 미국사람, 학생, 키180, 29살 이라는 특징이 있다고 가정하면. 이러한 특징 중에서 코드로 나타낼 때 특정 미국사람, 29살을 뽑아내거나 조금 더 간추려서 나타내는 것을 말한다.
캡슐화
- encapsulation는 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것을 말한다.
상속성
- inheritance는 상위 클래스 즉 부모 클래스의 특성을 하위 즉 자식 클래스가 이어받아서 재사용하거나 추가, 확장하는 것이다. 코드의 재사용 측면, 계측적인 관계 생성 또는 유지보수성 측면에서 굉장히 중요하다.
다형성
- polumorephism은 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말한다. 오버로딩 또는 오버라이딩이 대표적이라고 할 수 있다.
- 오버로딩(Overloading)은 말 그대로 같은 이름을 가진 메서드를 여러 개 두는 것을 말한다. 메서드의 타입, 매개변수의 유형, 개수 등으로 여러 개를 둘 수 있다.
- 오버라이딩(Overriding)은 주로 method overriding을 말하며 부모 클래스로부터 상속받은 method를 자식 class가 재정의하는 것이다. 부모 클래스에서 만들었지만 자식 클래스기반으로 메서드가 재정의가 된다는 것이다.
객체지향 프로그래밍의 설계원칙
객체지향 프로그래밍을 설계할 때는 SOLID원칙을 꼭 숙지해야하며 원칙을 지켜줘야 한다..
S -> 단일 책임 원칙.
O -> 개방-페쇠 원칙
L -> 리스코프 치환 원칙
I -> 인터페이스 분리 원칙
D -> 의존 역전 원칙을 의미한다.
- S(SRP, Single Responsibility Principle): 모든 클래스는 각각 하나의 책임만 가져야 하는 원칙이다.
- O(OCP, Open Closed Principle): 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고 수정할 때는 닫혀 있어야 하는 원칙이다. Therefore, 기존의 코드는 잘 변경하지 않으면서도 확장은 쉽게 가능해야 한다.
- L(LSP, Liskov Substitution Principle): 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. Class는 상속되기 마련이고 부모, 자식이라는 계층 관계가 형성된다.
-I(ISP, Interface Segregation Principle): 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 원칙이다. 상위 계층은 하위 계층의 변화에 대한 구현으로부터 독립한다.