일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쿠버네티스 어노테이션
- 피터코드의 상속규칙
- kubenetes architecture
- Abstraction
- kubernetes in actin
- 위임
- kube
- kubernetes
- maven
- 레이블 셀렉터
- kubernetes component
- kubernetes in action
- 피터코드
- 빌드
- ArgoCD
- 쿠버네티스
- 레이블
- 메이븐
- kubenetes in action
- OOP
- 캡슐화
- 어플리케이션셋
- 객체지향
- Encapsulation
- argocd applicationset
- applicationset
- 추상화
- kubenetes
- delegation
- 상속성
- Today
- Total
목록전체 글 (17)
IT 끄적장

다형성 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력. 다형성은 상속관계와 함께 서브 클래스를 개별적으로 다룰 필요 없이 한 번에 처리할 수 있는 수단을 제공한다. 간단하게 애완동물을 예시로 다형성의 개념을 살펴보자. 애완동물에는 고양이, 강아지, 앵무새 등 여러 종류의 동물이 있다. 이러한 동물은 같은 행동을 하더라도 행동 방식 자체는 다르다. 고양이에게 말을 걸면 '야옹~', 강아지는 '멍멍~', 앵무새는 '짹짹' 거리며 대답을 할 것이다. 고양이, 강아지, 앵무새는 모두 'talk'라는 연산을 수행하지만 talk를 하는 행동 방식은 모두 다르다. 이것이 바로 다형성의 개념이다. 다형성은 상속과 연계되어 동작하면 매우 강력한 기능은 제공한다. 아래의 코드를 살펴보자..

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

Inheritance (상속성) 하나의 일반화된 개체가 가지고 있는 속성을 다른 특수한 개체가 물려받아 부모-자식 관계를 형성하고, 각 자식 개체의 특수성에 알맞게 구현하는 OOP의 설계 원리 상속성은 OOP의 개념에서 가장 많이 오해하고, 잘못 사용될 여지가 큰 개념이다. 이 특성을 단순히 코드의 재사용으로 바라보는 관점은 상속성을 지극히 한정적으로 바라보는 시각이다. 상속성을 살펴보기 전에 일반화의 개념을 좀 더 생각해보자. 사과, 배 , 바나나, 오렌지를 생각하면 가장 먼저 떠오르는 것이 대부분 "과일"이라고 답할 것이다. 즉, 과일은 사과, 배, 바나나, 오렌지가 가진 공통 개념을 일반화한 개념이며 사과, 배, 바나나, 오렌지는 과일의 한 종류가 되므로 과일을 특수화 한 개념이 된다. 이와 같이 ..

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; } 위와 같이 코드가 작성되었..