2025-08-03 09:52
Status:
Tags: 소프트웨어 공학
위계 구조(계층 구조) Hierarchy
- 위계 구조(계층 구조)는 상하 관계를 기반으로 시스템이나 데이터를 단계적으로 조직화하는 방식이다.
- 각 계층은 상위 계층과 하위 계층 간의 종속적 관계를 가지며
- 상위 계층은 더 포괄적이고 일반적인 역할을, 하위 계층은 더 구체적이고 세부적인 역할을 수행한다.
프로그래밍에서는 상위 클래스, 하위 클래스가 대표적인 계층 구조이다.
class Animal {
void eat() {
System.out.println("먹고 있습니다.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
class Cat extends Animal {
void meow() {
System.out.println("야옹!");
}
}
위 코드처럼 Animal은 상위 클래스로 공통된 행동(eat)을 정의하고 하위 클래스에서도 사용할 수 있다. 반면 bark와 meow는 하위 클래스에서 각자 자신의 행동을 정의한다. 위계가 없다면 eat을 중복해서 정의해야 하고 또 한군데서 바뀌었을 때 다른 곳에서도 모두 바꿔주어야 한다. 결국 계층 구조는 프로그래밍의 핵심 원칙인 중복 제거에 크게 기여한다.
현실 세계에 비유하자면 회사에서 CEO가 있고, 그 아래 부서장들이 있고, 그 아래 팀원으로 이루어진 회사 조직도가 있다. CEO는 회사 전체를 총괄하며 큰 최종 결정을 내리고 부서장은 특정 부서를 관리하면서 팀원들에게 업무를 분할한다. 그리고 각 팀원들은 개별 업무를 수행하여 최종 목표 달성에 기여한다. 이러한 위계 구조는 전체 시스템을 계층화 하여 각 계층이 고유한 역할을 해서 전체 시스템의 복잡성을 낮춰 잘 작동하도록 돕는다. 반대로 계층이 제대로 나눠져 있지 않다면 프로그래밍에서는 중복 코드 같은 안티 패턴이 발생할 수 있고 현실 세계에서는 전체 시스템이 비효율적으로 운영될 수 있다.