애자일 방식 : 소프트웨어 개발 방식의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론
객체지향 설계 5대 원칙이라 부르는데 SRP,OCP,LSP,ISP,DIP의 앞자를 따서 SOLID라고 부름
- 단일 책임 원칙 (Single Responsiblity Principle)
- 모든 클래스는 하나의 책임만 가져야하고, 그 클래스는 책임을 완전히 캡슐화 해야 함
- 개방-폐쇄 원칙 (Open Closed Principle)
- 확장에는 열려있고 수정에는 닫혀있는 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 함
- 리스코프 치환 원칙 (Liskov Substitution Principle)
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙, 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 함
- 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 LSP를 만족 함
- 인터페이스 분리 원칙 (Interface Segregation Principle)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 함
- 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 나음
- 의존 역전 원칙 (Dependency Inversion Principle)
- 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 함
- 구체적인 클래스보다 인터페이스나 추상클래스와 관계를 맺어야 함
객체들이 서로 유기적으로 동작하는 프로그래밍 이론
코드의 재사용성과 중복제거가 가장 큰 목적
- 추상화 : 객체들의 공통된 특징을 파악해 정의
- 캡슐화 : 정보은닉
- 상속 : 코드 중복제거, 재사용
- 다형성 : 같은 형태지만 다른 기능, 오버라이딩
이러한 특징을 사용해 의존성을 줄이고 결합도를 낮춰야 함
- 트레이드 오프
객체의 자율성을 높이다 보면, 또 다른 객체에서 의존이 발생함, 이렇게 객체의 자율성은 상승하지만 결합도는 높아지는 경우가 생김, 이걸 잘 조절해서 해야함
- 의인화
현실 서계에서의 개념과 달리 객체지향의 세계에서 모든 객체를 능동적이고 자율적인 존재로 보는 객체지향 설계원칙
한 객체에 책임을 책임을 다 지게하는 코드는 객체지향 설계를 지킨 코드가 아님. 이러한 코드는 절차지향 프로그래밍 방식
책임을 잘 나눠주면 객체는 자신을 스스로 책임지게 됨
참고 사이트