속성
과 메서드
가 결합한 형태의 객체 Object
로 표현하는 기법Class
변수
/ 행위: 메서드
Object
Class
에서 정의한 것을 토대로 메모리에 할당된다.Method
Class
로부터 생성된 객체를 사용하는 방법Function
, Procedure
에 해당하는 연산 기능Message
Instance
Class
통해 생성한 실제 객체Property
Class
내에 속한 객체들이 가진 데이터 값을 단위 별로 정의캡슐화
, 상속
, 다형성
, 추상화
, 정보 은닉
, 관계성
이 존재한다.캡-상-다-추-정-관
정보 은닉
, 관계성
정리 보류Class
의 Property
와 method
를 하위 class
에서 재정의 없이 물려받아 사용하는 기법class
에서 속성, 연산을 전달 받아 새로운 형태의 class
로 확장하여 사용하는 기법Overloading
, Overriding
이 대표적이다.//Overloading
void func(int a){}
void func(char a){}
void func(int a, int b){}
/*
* 매개변수의 유형과 개수를 다르게 하여
* 같은 이름의 메서드를 여러 개 가지는 기법
*/
//Overriding
class A {
void func(int a){
System.out.println(a);
}
}
class B extends A {
//부모 class A로부터 상속 받은 func 메서드 재정의
void func(int a){
System.out.printf("a의 값: %d\n", a);
}
}
/**
* class B는 A class로부터 상속 받은 상태이다.
* 이때 부모 클래스인 A가 가지고 있던 func 메서드를
* 자식 클래스에서 재정의해서 사용할 수 있다.
*
* 부모 클래스로부터 상속 받은 메서드를
* 자식 클래스에 재정의해서 사용하는 기법 => 오버라이딩
*/
abstract class A {
abstract void func(){}
}
class B extends A {
//추상 클래스 A를 상속 받은 B 클래스는
//추상 메서드인 func를 재정의, 오버라이드를 해줘야 한다.
void func(){
System.out.println("Hello World");
}
}
의존성 역전의 원칙 Dependency Inversion Principle
SOLID
라고 한다.설계 원칙 | 설명 |
---|---|
단일 책임의 원칙 | 하나의 class는 하나의 목적을 위해 생성되며 class가 제공하는 모든 서비스는 하나의 책임을 수행하는 것에만 집중해야 한다는 법칙 |
개방 폐쇄 원칙 | SW의 구성 요소 (컴포넌트, class, 모듈, 함수)는 확장일 때는 열려있고 변경에는 닫혀 있어야 하는 법칙 |
Liskov 치환의 법칙 | 상속 받은 하위 class는 어디서나 자신의 기반 타입, 상위 class로 교체할 수 있어야 한다는 법칙 |
인터페이스 분리 원칙 | 한 class는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 법칙 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다는 법칙 |
의존성 역전의 법칙 | 실 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 법칙 |
구현 절차 | 설명 |
---|---|
요건 정의 | 업무 요건 정의 |
객체 지향 분석 | 객체 모델링, 동적 모델링, 기능 모델링 수행 |
객체 지향 설계 및 구현 | 시스템 설계, 객체 설계 객체 지향 구현 |
테스트 및 배포 | 테스트, 패키지 프로젝트 평가 |
사용자의 요구사항을 분석하여 요구된 문제와 관련된
모든 class, 속성과 연산, 관계 등으로 나누어 분석하는 기법
usecase
에 의한 접근 방법으로, Usecase
를 모든 모델의 근간으로 활용되는 방법론객체 모델링
- 동적 모델링
- 기능 모델링
순서로 분석을 진행한다.
1. 객체 모델링
정보 모델링
라고도 한다.2. 동적 모델링
기능 모델링