2) OOP

전성수·2023년 12월 2일

공개

목록 보기
2/7

S/W 품질과 OOAD

품질 좋은 S/W를 만들기 위한 일환

  • 분석이 분명하고, 쉬워야함
    • 분명하면서 이해가 잘 되어야함
    • 복잡도가 낮아야 함
  • 설계가 탄탄해야함
    • 유지보수가 효과적이어야 함
    • 테스트가 좋아야함
    • 확장이 쉬워야함

UML

객체지향설계의 표기법의 표준

분석/설계의 최종 결과물 -> UML Diagram

추상화: 복잡도를 낮춰주고 중요한 부분을 드러냄

  • 구조적 다이어그램(struct)
  • 동적 다이어그램(behavior)

절차지향개발

  • 객체지향 이전의 개발
    • 정형화된 알고리즘 분야에서는 유리함
    • 절차대로 개발함
    • 작은 규모의 개발
  • BUT
    • 대규모 프로그램을 만드는데는 불리함
    • 세세하게 신경 써야 할 내용들이 매우 많아지면 불리함.

객체지향개발

  • 코드의 재사용성
    • 객체 단위로 구현하기 시작
      • 클래스로 객체를 구현한다. 클래스 중심의 개발

서버와 클라이언트(서버코드를 이용해서 동작)로 나누어서 개발

💊캡슐화

❗️client들은 Readme를 읽지 않는다.
❗️따라서 Server Code Level에서 이를 제한해야 한다.

  • 접근제어자를 이용해서 외부에서 클래스에 접근하지 못하게 함
  • 변경에 유연해짐

⭐️상속

❗️부모가 가진 요소들을 자식들이 물려받아 사용할 수 있음
❗️코드 중복 방지를 위해 공통적인 요소를 일반화 시킴

  • 오버라이딩(재정의)
    • 상속받은 매서드를 재정의함
    • 오버로딩과는 다름(같은 이름의 매서드를 다른 argument로 함수 구분, 리턴타입이 같아야 함!)

🤼‍♀️다형성

  • 재사용성
    • 하나의 명령으로 여러 구현부를 다룰 수 있음
  • 유지보수 용이
    • 여러객체를 하나의 타입으로 관리
  • 느슨한 결합
    • 클래스 간의 의존성을 줄여 확정성이 늘어남

커플링

🐤 의존
어떤 객체가 다른 객체를 이용해서 자신의 동작을 만든다.

profile
ㅡ/ㅡ

0개의 댓글