일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- kubernetes in action
- 빌드
- Encapsulation
- kubernetes
- kubernetes in actin
- Abstraction
- kubenetes in action
- 쿠버네티스
- kube
- argocd applicationset
- ArgoCD
- 상속성
- maven
- 레이블 셀렉터
- 피터코드의 상속규칙
- 레이블
- 캡슐화
- 위임
- 객체지향
- 어플리케이션셋
- kubenetes
- 추상화
- 피터코드
- 쿠버네티스 어노테이션
- kubenetes architecture
- delegation
- kubernetes component
- OOP
- 메이븐
- applicationset
- Today
- Total
목록OOP (4)
IT 끄적장

Peter Coad는 상속의 오용을 막기 위해 상속의 사용을 엄격하게 제한하는 5가지의 규칙들을 만들었다. 만약, 다음 5가지 규칙에 위배되는 사항이 있으면 상속을 사용하면 안 된다고 말한다. 자식 클래스와 부모 클래스 사이는 '역할 수행 (Role Playing)'의 관계가 아니어야 한다. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 절대 없어야 한다. 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다. 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 한다. 자식 클래스가 "역할(role)", "트랜잭션(transaction)", "디바이스(device)" 등을 특수화해야 한다. 아래 그림은 사람이..

앞선 포스팅에서 일반화를 통한 상속성에 대하여 살펴보았다. 그렇다면 이번 포스팅에서는 어떠한 기준으로 자식 클래스들과 부모 클래스 간 상속관계가 이루어져야 하는 공부 해보자. 사실 많은 개발자들은 단순히 코드의 재사용을 위해 클래스 간 상속 관계를 인위적으로 만들어준다. 그러나, 단순히 코드의 재사용을 위한 상속관계는 클래스 간 결합도를 높여 유지보수를 유연하지 못하게 만드는 부작용이 존재한다. 다음 예시를 통하여 좀 더 자세히 살펴보자. ArrayList 클래스를 상속받아 Stack 클래스를 만들려는 개발자가 있다. 아마도 이 개발자의 의도는 ArrayList에 정의된 메소드를 자신이 구현하지 않고 코드의 재사용을 의도했을 것이다. 재사용성의 측면으로만 본다면 개발자의 의도대로 성공적이었을 것이다. 그..

Encapsulation (캡슐화) 정보은닉(information hiding)을 통하여 높은 응집도(cohesion)와 낮은 결합도(coupling)를 갖도록 하는 OOP의 설계 원리 캡슐화를 이해하기 이전에 응집도와 결합도 대하여 먼저 알아보자. 응집도(cohesion)는 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있어야 하는 나타내는 척도이다. 결합도(coupling)는 특정 operation을 수행하는데 다른 클래스나 모듈들에 얼마나 의존적(dependent)인지를 나타낸다. 대게, 이상적인 모듈을 응집도(cohesion)가 높으며, 결합도(coupling)가 낮은 모듈을 말한다. why? 사용자의 요구사항이 변경되면, 개발자 역시 코드 수정이 불가피하다. 이때, 응집도가 높고 결합도가..

OOP(객체 지향 프로그래밍)에는 기본적으로 4가지의 특성이 존재한다. 1. Abstraction(추상화) 2. Encapsulation(캡슐화) 3. Polymorphism(다형성) 4. Inheritance(상속성) 가장 먼저 추상화의 개념에 대하여 살펴보자. Abstraction(추상화) 공통된 속성을 가진 개체들을 일반화하여 이름을 붙이는 것 예를 아우디, 벤츠는 공통적으로 '자동차'라는 이름으로 일반화할 수 있을 것이다. 즉, 자동차는 아우디와 벤츠의 추상화된 개념이다. 자동차마다 엔진오일을 교환하는 방식이 다르다고 가정하였을 때 코드는 다음과 같이 작성될 것이다. switch(car){ case audi: ... break; case benz: ... break; } 위와 같이 코드가 작성되었..