내일배움캠프 18일차 TIL : 이해 방법

김정환·2024년 10월 8일
0

키워드

  • 구조 이해하기

구조 이해하기

객체지향 프로그래밍의 장점은 코드를 모듈화하여 재사용성을 높일 수 있다.
기능을 하나의 부품으로 분리해서 필요한 곳에서 그때 그때 사용하는 것이 가장 큰 장점이다.

하지만 이 장점이 단점이 되기도 하는데
기능을 개별 클래스로 분리하다보니 관리해야할 클래스들이 많아져 제어하기 어려워진다는 것이다.

문제

이번에 강의를 들으면서 프로젝트의 구조를 도중에 놓칠 뻔했다.
지엽적인 작업을 하고나니 전체 구조가 어떻게 되어있는지 순간적으로 이해가 안되었다.

해결 시도

보통은 처음 다른 사람의 프로젝트를 들여다볼 때 코드의 시작을 찾아본다.
코드의 시작부터 어떤 객체를 받고, 어떤 행위를 하는지 들여다본다.

하지만, 클래스의 관계가 복잡해지고, 그런 코드가 소량이 아니라 다량이라면 이해하는데 한계가 온다.
미로에 지도없이 들어가는 꼴이다.

그래서 이번에는 지도를 그려보기로 했다.

클래스 다이어그램을 그리면서 다시금 클래스들의 대략적인 관계를 정리할 수 있었다.

UML 작성을 가끔식하다보니 관계에 화살표나 요소를 적는게 헷갈려서
정리를 따로 했다.

헷갈렸던 부분

  • 접근 제한자

    • "+" : public
    • "-" : private
    • "#" : protected
    • "~" : default
  • 클래스 간 관계

    • 일반화
      • 간단하게 상속 관계를 표시한 것이다.
      • 어떤 클래스들의 공통적인 부분을 상위 클래스로 분리한 것을 표현한다.
      • 하위에서 상위로 화살표가 향한다.
    • 실체화
      • 인터페이스를 상속한 경우 사용한다.
      • 인터페이스는 해당 기능에 대한 명세만 하고 있으므로 이를 실제로 구현했다는 의미다.
    • 의존
      • 어떤 클래스가 다른 클래스를 참조하는 것을 말한다.
        • 로컬 변수, 파라미터, 반환값으로 호출하는 등, 메서드가 작동하는 동안에만 해당한다.
    • 연관
      • 다른 객체의 참조를 가지고 있을 때 사용한다.
        • 여기서 말하는 참조는 해당 클래스를 멤버 변수로 할당할 때 쓴다는 것이다.
      • 일방향일 땐, 참조하는 방향으로 화살표
      • 쌍방향일 땐, 화살표가 없음.
      • 선 위에 숫자를 표기하여 연관 관계의 수를 나타낼 수 있다.
    • 집합
      • 전체 - 부분 관계를 표현
      • 전체에 해당하는 클래스가 사려져도, 부분 클래스는 독립적으로 존재 가능.
        • 어려운 말로 생명주기가 독립하다고도 표현
        • 쉽게 말하면 외부에 있는 객체멤버 변수로 받아 사용하는 경우
      • 전체에 속이 빈 마름모 모양을 두고 부분을 향해 화살표 or 일반선으로 가리킨다.
    • 합성
      • 전체 - 부분을 나타낼 때 사용.
      • 집합보다 더 강력한 집합을 의미할 때 사용.
      • 전체에 해당하는 클래스가 사라지면, 부분에 해당하는 클래스가 같이 사라져야함.
        • 생명주기를 공유한다고도 표현.
        • 객체 내부에서 부분에 해당하는 객체를 생성하고 멤버 변수로 사용하는 경우
      • 전체에 속이 찬 마름모 모양을 두고 부분을 향해 화살표 or 일반선으로 가리킨다.

정리

불과 어제 들은 강의 내용이고 상속 등등을 이용해서 이런 느낌작업을 했다고 기억하지만
실제로 코딩을 할 때 순간적으로 이게 뭐였지하고 다시 돌아가서 확인했다.

#내일배움캠프 #스파르타내일배움캠프 #스파르타내일배움캠프TIL

profile
사파 개발자

0개의 댓글