객체지향프로그래밍의 응집도와 결합도
위의 그림은 클래스간의 관계를 나타낸다.
Cinema가 다른 클래스와 연관이 많이 되어있다.
이것을 다른 클래스 사이에 '의존도/결합도가 높다' 라고 말한다.
그림으로 쉽게 이해해보자면 위와 같다.
`결합도`가 낮을수록 좋다.
`응집도`는 객체 또는 클래스에 얼마나 관련 높은 책임들을 할당했는지를 나타낸다.
실제 생활에서도 본인이 맡은 바를 수행하며 능률을 높여 일의 효율이 증가하는 좋은 효과를 얻을 수 있다.
결론 : 객체지향 프로그래밍은 객체의 자율성을 높이기 위해 의존도/결합도를 낮추고, 응집도를 높인다.
그렇다면 `응집도`는 어떻게 높일까?
1. 연관이 없는 작업은 다른 객체(클래스)에게 위임한다.
2. 객체 내부의 상태를 `캡슐화` 하고 오직 메세지를 통해서만 상호작용한다.
객체지향 3대 속성 : 추상화, 상속, 다형성
1. 추상화
객체의 공통된 특징을 파악하여 이를 하나의 개념으로 다루는 것.
예를 들어, 자동차라는 개념에서는 모든 자동차가 바퀴, 엔진, 창문 등을 가지고 있다는 것을 추상화할 수 있다.
추상화는 복잡성을 줄이고 핵심적인 개념을 강조함으로써 프로그램의 이해와 유지보수를 용이하게 한다.
2. 상속
이미 존재하는 클래스(부모 클래스 또는 슈퍼 클래스)를 기반으로 새로운 클래스(자식 클래스 또는 서브 클래스)를 만드는 것을 의미한다.
자식 클래스는 부모 클래스의 속성과 메서드를 상속받아 사용할 수 있으며, 이를 통해 코드의 재사용성과 확장성을 높일 수 있다.
상속은 객체지향 프로그래밍의 중요한 특징 중 하나이며, 클래스들 간의 계층 구조를 형성한다.
3. 다형성
같은 이름의 메서드나 연산자가 여러 형태로 동작할 수 있는 특성을 말한다.
이는 하나의 인터페이스나 기능이 다양한 방식으로 구현될 수 있음을 의미한다.
다형성은 코드의 유연성을 높여주며, `오버로딩(Overloading)`과 `오버라이딩(Overriding)`을 통해 구현된다.
오버로딩은 같은 이름의 메서드를 매개변수의 타입 또는 개수에 따라 다르게 정의하는 것을 말하며, 오버라이딩은 부모 클래스에서 정의된 메서드를 자식 클래스에서 재정의하는 것을 말한다.
'스파르타 게임개발종합반(Unity) > TIL - 본캠프 매일 공부 기록' 카테고리의 다른 글
2024.05.20 TIL - 내적계산으로 시야각 계산, Physics2D.CircleCastAll, Vector2.Dot (0) | 2024.05.20 |
---|---|
2024.05.17 TIL - localRotation, rotation 차이, Quaternion.Slerp, Mathf.Atan2, Mathf.Rad2Deg (0) | 2024.05.18 |
2024.05.14 TIL - Queue를 활용한 오브젝트 풀(ObjectPool) (0) | 2024.05.14 |
2024.05.13 TIL - 2D 정렬, 앞일 땐 앞이고, 뒤일 땐 뒤에 있기 (0) | 2024.05.13 |
2024.05.10 TIL - event, Action, Func, Delegate (0) | 2024.05.10 |
댓글