///////
Search
🖨️

Interface

박수진_1005

JAVA SOLID원칙

1.
SRP: 단일 책임 원칙
한 클래스는 하나의 책임만 가져 가야 한다.
변경에 있어서 책임이 적으면 잘 적용 된 것이다.
2.
OCP: 개방 - 패쇄 원칙
확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
다형성의 본질
3.
LSP: 리스코프 치환 원칙
기능적인 규약을 맞추고 보장을 해주어야 한다.
4.
ISP: 인터페이스 분리 원칙
특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
5.
DIP: 의존 관계 역전 원칙
프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
즉, 역할에 중점 해야지 구현에 의존하면 안된다.

Even Odd

요구사항

홀, 짝 판별 프로그램
인터페이스 사용
홀/짝 으로 출력될 수도, Odd/Even으로 출력될 수도 있도록 함
OCP원칙을 지킬 것

아키텍처 설계

OddEvenImple : 프로그램의 인터페이스
EnglishOddEven : Odd Even으로 출력
KoreanOddEven : 홀, 짝으로 출력
OddEvenMain : 메인함수, 인터페이스와 실질적인 OddEven클래스를 조립해주는 역할을 함
OddEven : 조건에 맞게 출력될 수 있도록 로직이 구현되어있는 클래스
코드

김준호_1005

Calculator

LSP (Liskov Substitution Principle) 리스코프 치환 원칙

예제

요구사항

1.
NumberGenerator Interface를 활용하여 RandomGenerator, BypassGenerator, SpecificGenerator를 제작합니다.
2.
Calculator를 제작합니다.
a.
plus 기능을 가집니다.
3.
각 메소드는 parameter를 int형 하나만 받습니다.

1. interface NumberGenerator 생성

상속받는 Class가 원하는 숫자를 return할 수 있는 설계 틀을 생성.
public interface NumberGenerator { int create(int num); }
Java
복사

2-1. NumberGenerator를 상속받는 RandomNumberGenerator생성

인터페이스 NumberGenerator 의 메소드 createOverride하여 랜덤된 숫자를 return
public class RandomNumberGenerator implements NumberGenerator{ @Override public int create(int num) { return (int)(Math.random() * num); } }
Java
복사

2-2. NumberGenerator를 상속받는 SpecificNumberGenerator생성

인터페이스 NumberGenerator 의 메소드 createOverride하여 특정 숫자를 return
public class SpecificNumberGenerator implements NumberGenerator { @Override public int create(int num) { return 320 * num; } }
Java
복사

2-3. NumberGenerator를 상속받는 ByPassNumberGenerator생성

인터페이스 NumberGenerator 의 메소드 createOverride하여 입력된 숫자를 그대로 return
public class ByPassNumberGenerator implements NumberGenerator { @Override public int create(int num) { //두 번째 따라하기 return num; } }
Java
복사

3. NumberGenerator 를 활용하여 class Calculator 생성

public class Calculator { NumberGenerator numberGenerator; int baseNumber; public Calculator(NumberGenerator numberGenerator) { this.numberGenerator = numberGenerator; this.baseNumber = 10; } public Calculator(NumberGenerator numberGenerator, int baseNumber) { this.numberGenerator = numberGenerator; this.baseNumber = baseNumber; } public void plus(int num) { System.out.println(baseNumber + numberGenerator.create(num)); } }
Java
복사

4. class Main

RandomNumberGenerator, SpecificNumberGenerator, ByPassNumberGenerator를 바꿔줌으로서 원하는 기능을 바로 바꿀 수 있다.
public class Main { public static void main(String[] args) { NumberGenerator numberGenerator = new RandomNumberGenerator(); Calculator calculator = new Calculator(numberGenerator); numberGenerator.plus(5); // RandomNumberGenerator의 create number return } }
Java
복사
public class Main { public static void main(String[] args) { NumberGenerator numberGenerator = new SpecificNumberGenerator(); Calculator calculator = new Calculator(numberGenerator); numberGenerator.plus(5); // SpecificNumberGenerator의 create number return } }
Java
복사
public class Main { public static void main(String[] args) { NumberGenerator numberGenerator = new ByPassNumberGenerator(); Calculator calculator = new Calculator(numberGenerator); numberGenerator.plus(5); // ByPassNumberGenerator의 create number return } }
Java
복사