- 자바의 철학
간단하게 읽어만두자.
- 객체 지향 방법론을 사용해야 한다.
- 같은 프로그램이 여러 운영 체제에서 실행될 수 있어야 한다.
- 컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.
- 원격 코드를 안전하게 실행할 수 있어야 한다.
- 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.
- 객체지향 5원칙(SOLID)
- SRP (Single Responsibility Principle) 단일 책임 원칙
- 클래스에 역활과 책임을 관련된 것만 주고 많이 주지말자
- OCP (Open Closed Principle) 개방 폐쇄 원칙
- 자신의 확장에는 열려있고 주변의 변화에는 닫혀있어야한다
- LSP (Liskov Substitution Principle) 리스코프 치환 원칙
- 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.
Upcating 된 객체 참조 변수가 논리적으로 그 역할이 문제가 없어야 한다.
하위 클래스는 is a kind of 상위 클래스이다
LSP(리스코프 치환 원칙)은 하위클래스가 상위클래스 역할을 대신할 때 논리적으로 맞아 떨어져야 한다.
이는 객체 지향이 인간이 실세계를 보면서 느끼고 논리적으로 이해한 것과 똑같이 프로그래밍하는 게 목적이기 때문에 논리적으로 맞아야한다.
- 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.
- ISP (Interface Segregation Principle) 인터페이스 분리 원칙
- 상황과 관련 있는 메서드만 제공
- DIP (Dependency Inversion Principle) 의존 역전 원칙
- 자신보다 변하기 쉬운 것에 의존하지말고 하위클래스나 구체클래스 에게 의존하면 안된다.
- 객체지향 프로그래밍
일단 객체는 현실세계의 속성과 동작을 가진 어떤 것을 추상화 한 것이고(자동차등) ]
프로그래밍은 문제를 해결하기 위한 과정이라면 객제치향이라는 수식어는 방법을 나타내고 있다.
객체지향 프로그래밍이란 현실세계의 속성과 동작을 가진 어떤 것을 추상화시켜 문제를 해결하는 방법 중 하나
라고 생각된다.
(추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 인데 객체 지향적 관점에서 클래스를 정의하는 것)
(캡슐화 : 객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶는다)