자바에서 클래스(Class)와 클래스 다이어그램(Class Diagram)은 객체지향 프로그래밍(OOP)의 중요한 개념과 도구입니다. 이들은 소프트웨어 시스템을 설계하고 구현하는 데 있어서 중요한 역할을 합니다.
### 클래스(Class) in Java
자바에서 클래스는 객체를 생성하기 위한 설계도 혹은 템플릿입니다. 클래스는 다음과 같은 요소로 구성됩니다:
1. **속성 (Fields)**:
- 클래스가 가지는 데이터 변수를 의미합니다.
- 자바에서는 속성을 멤버 변수 혹은 인스턴스 변수라고도 부릅니다.
- 예를 들어,

위 예제에서 `brand`, `model`, `year`는 `Car` 클래스의 속성입니다.
2. **메소드 (Methods)**:
- 클래스가 제공하는 기능을 정의하는 함수들을 의미합니다.
- 메소드는 클래스의 행동을 구현합니다.
- 예를 들어,

위 예제에서 `drive()`와 `stop()`은 `Car` 클래스의 메소드입니다.
3. **생성자 (Constructor)**:
- 객체를 생성할 때 초기화를 담당하는 특별한 메소드입니다.
- 클래스 이름과 동일한 메소드이며, 객체 생성 시 자동으로 호출됩니다.
- 예를 들어,

위 예제에서 `Car(String brand, String model, int year)`는 `Car` 클래스의 생성자입니다.
### 클래스 다이어그램(Class Diagram) in Java
클래스 다이어그램은 클래스들의 구조와 관계를 시각적으로 표현하는 도구입니다. 자바에서 클래스 다이어그램은 다음과 같은 요소로 구성됩니다:
1. **클래스(Class)**:
- 다이어그램에서 클래스는 사각형으로 표현됩니다.
- 클래스 이름이 맨 위에 위치하고, 그 아래에 속성(필드)과 메소드가 나열됩니다.
- 접근 제어자(예: `+`는 public, `-`는 private)와 함께 속성과 메소드가 표시됩니다.
- 예를 들어,

2. **관계(Relationships)**:
- 클래스들 간의 관계를 나타내는 화살표로 표시됩니다.
- 주요 관계 유형에는 상속(Inheritance), 구성(Composition), 연관(Association), 집합(Aggregation) 등이 있습니다.
- 예를 들어, 상속 관계는 화살표가 화살표 끝에 삼각형을 가리키는 방식으로 표현됩니다.
3. **상속(Inheritance)**:
- 한 클래스가 다른 클래스를 확장하거나 상속받을 때 사용됩니다.
- 자바에서는 `extends` 키워드를 사용하여 상속을 구현합니다.
4. **구성(Composition)과 집합(Aggregation)**:
- 클래스들 간의 복잡한 관계를 표현하는 데 사용됩니다.
- 구성은 한 객체가 다른 객체를 포함하며, 이 관계는 전체와 부분의 관계를 나타냅니다.
- 집합은 한 객체가 다른 객체를 포함하지만, 포함된 객체가 독립적으로 존재할 수 있습니다.
### 예시
다음은 클래스 다이어그램의 간단한 예시입니다:


이 다이어그램에서 `Car` 클래스는 `Engine` 클래스와 `FuelTank` 클래스와의 관계를 보여줍니다. `Car` 클래스는 `Engine` 클래스와는 구성 관계를 갖고 있고, `FuelTank` 클래스와는 집합 관계를 갖고 있음을 나타냅니다. 각 클래스의 속성과 메소드는 해당 클래스의 상태와 행동을 정의하며, 클래스 간의 관계는 시스템의 구조를 이해하는 데 중요한 역할을 합니다.
클래스 다이어그램은 소프트웨어 설계와 분석 과정에서 개발자들이 시스템을 시각적으로 이해하고, 설계를 검토하며, 변경사항을 통합하는 데 유용한 도구로 사용됩니다.
'##JAVA' 카테고리의 다른 글
| GC<가비지 컬렉터> (예외, IO, 제네릭 복습) (0) | 2024.07.08 |
|---|---|
| 객체지향프로그램의 4요소 : 다형성 (0) | 2024.07.08 |
| 객체와 클래스 (0) | 2024.07.08 |
| 참조변수와 일반변수 (0) | 2024.06.24 |
| 자바 장점과 단점 (0) | 2024.06.17 |