S/W 품질과 OOAD
품질 좋은 S/W를 만들기 위한 일환
- 분석이 분명하고, 쉬워야함
- 분명하면서 이해가 잘 되어야함
- 복잡도가 낮아야 함
- 설계가 탄탄해야함
- 유지보수가 효과적이어야 함
- 테스트가 좋아야함
- 확장이 쉬워야함
UML
객체지향설계의 표기법의 표준
분석/설계의 최종 결과물 -> UML Diagram
추상화: 복잡도를 낮춰주고 중요한 부분을 드러냄
- 구조적 다이어그램(struct)
- 동적 다이어그램(behavior)
절차지향개발
- 객체지향 이전의 개발
- 정형화된 알고리즘 분야에서는 유리함
- 절차대로 개발함
- 작은 규모의 개발
- BUT
- 대규모 프로그램을 만드는데는 불리함
- 세세하게 신경 써야 할 내용들이 매우 많아지면 불리함.
객체지향개발
- 코드의 재사용성
- 객체 단위로 구현하기 시작
- 클래스로 객체를 구현한다. 클래스 중심의 개발
서버와 클라이언트(서버코드를 이용해서 동작)로 나누어서 개발
💊캡슐화
❗️client들은 Readme를 읽지 않는다.
❗️따라서 Server Code Level에서 이를 제한해야 한다.
- 접근제어자를 이용해서 외부에서 클래스에 접근하지 못하게 함
- 변경에 유연해짐
⭐️상속
❗️부모가 가진 요소들을 자식들이 물려받아 사용할 수 있음
❗️코드 중복 방지를 위해 공통적인 요소를 일반화 시킴
- 오버라이딩(재정의)
- 상속받은 매서드를 재정의함
- 오버로딩과는 다름(같은 이름의 매서드를 다른 argument로 함수 구분, 리턴타입이 같아야 함!)
🤼♀️다형성
커플링
🐤 의존
어떤 객체가 다른 객체를 이용해서 자신의 동작을 만든다.