반응형
객체지향 4가지 특징
- 추상화 ( Abstraction )
- 다형성 ( Polymorphism )
- 캡슐화 ( Encapsulation )
- 상속 ( Inheritance )
객체지향 설계 원칙 5가지 (SOLID)
- SRP : Single Responsibility Principle (단일 책임의 원칙)
- OCP : Open/Closed Principle (개방 폐쇄의 원칙)
- LSP : Liskov’s Substitution Principle (리스코프 치환의 원칙)
- ISP : Interface Segregation Principle (인터페이스 분리의 원칙)
- DIP : Dependency Inversion Principle (의존성 역전의 원칙)
객체지향 설계 및 구현
- 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
- 객체들 간의 관계를 고민
- 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
- 협력을 설계
- 객체들을 포괄하는 타입에 적절한 책임을 할당
- 구현하기
사칙연산 계산기 구현
사칙연산 계산기 구현
• 요구사항
• 간단한 사칙연산을 할 수 있다.
• 양수로만 계산할 수 있다.
• 나눗셈에서 0을 나누는 경우 IllegalArgument 예외를 발생시킨다.
• MVC패턴(Model-View-Controller) 기반으로 구현한다.
간단한 테스트 코드 작성
CalculatorTest.java
package org.example;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
/**
* 사칙연산 계산기 구현
* • 요구사항
* • 간단한 사칙연산을 할 수 있다.
* • 양수로만 계산할 수 있다.
* • 나눗셈에서 0을 나누는 경우 IllegalArgument 예외를 발생시킨다.
* • MVC패턴(Model-View-Controller) 기반으로 구현한다.
*/
public class CalculatorTest {
// 1 + 2 --> Calculator
// 3 <-- Calculaotr
@DisplayName("덧셈연산 수행")
@Test
void additionTest() {
int result = Calculator.calculate(1, "+", 2);
assertThat(result).isEqualTo(3);
}
@DisplayName("덧셈연산 수행")
@Test
void subtractionTest() {
int result = Calculator.calculate(1, "-", 2);
assertThat(result).isEqualTo(-1);
}
}
Calculator.java
public class Calculator {
public static int calculate(int operand1, String operator, int operand2 ) {
if("+".equals(operator)) {
return operand1 + operand2;
} else if ("-".equals(operator)){
return operand1 - operand2;
}
return 0;
}
}
코드를 한 번에 연산을 할 수 있도록 수정해 줬다.
@ParameterizedTest
- 하나의 테스트 메소드로 여러개의 파라미터의 테스트를 수행 할 수 있도록 해준다.
@MethodSource
- 테스트 메소드에 맞는 메소드이름을 value에 넣어 사용가능
후의 강의는 비슷한내용 반복이기도하고
너무 빨라서 정리하기가 힘들것 같아서 중요한 내용만 정리하도록 해야겠다.
반응형
'Java' 카테고리의 다른 글
자바의 다양한 기능 / 데코레이터 패턴, Thread (0) | 2022.12.09 |
---|---|
자바의 다양한 기능 / 입출력 스트림, 직렬화, 입출력 클래스 (0) | 2022.12.09 |
자바의 다양한 기능 / 스트림, 예외처리 (0) | 2022.12.07 |
자바의 다양한 기능 / 내부 클래스 정의, 람다식 (0) | 2022.12.02 |
자바와 자료구조 / Generic, T extends, 컬렉션 프레임워크 (0) | 2022.11.30 |