본문 바로가기

분류 전체보기124

Enum 많이들 enum 이 type을 정의 하는 기능으로 알고 계실텐데요. enum은 강력한 다형성을 제공 합니다. enum에서 다형성을 사용하면 각 열거형 상수마다 동작을 정의할 수 있습니다. 먼저 enum 을 타입 형태로만 사용했을 경우입니다. if 문이 여러개 작성되며 소스가 어려워 집니다. public enum CalculateType2 { ADD, MULTIPLY, DIVIDE, } public class Client2 { public int someMethod(CalculateCommand2 calculateCommand) { if ( calculateCommand.getCalculateType() == CalculateType2.ADD ) { return calculateCommand.getNum1.. 2023. 12. 11.
캡슐화 지난 시간에 이어 아래 코드를 확인해 보도록 하겠습니다. 아래 코드에서 CalculateCommnad는 CalculateType, num1, num2 를 가지고 있습니다. 만약 해당 필드가 삭제가 된다면 getter 메서드도 함께 제거 되어야 하며 Client 코드 및 CalculateCommand를 사용 하는 기타 코드들도 변경이 이루어 져야 합니다. 이는 결합도가 높은 코드라 볼 수 있으며 필드 따로 계산로직 따로 사용하기 때문에 응집도가 낮다고할 수 있습니다. CalculateCommand를 너무 잘 아는 Clinet 객체 지향적인 코드는 결합도는 낮고 응집도는 높은 코드입니다. public class Client { public int someMethod(CalculateCommand calcul.. 2023. 12. 11.
추상클래스와 인터페이스 추상 클래스 : 인스턴스화할 수 없는 클래스입니다. 즉, 객체로 만들 수 없습니다. ( 추상메서드를 익명으로 구현하면 가능하지만요..) 이 클래스는 다른 클래스가 상속 받아 사용될 목적으로 설계 됩니다. 부모 클래스는 제공하지만 실제 인스턴스가 생성 되면 안되는 클래스 추상클래스는 말 그대로 추상적인 개념만 제공하는 클래스로 사용되어야 한다. 상속을 목적으로 사용된다. // 추상 클래스로 선언 public abstract class Animal { public void sound() { System.out.println("Animal.sound()"); } } public class AnimalSoundMain { public static void main(String[] args) { Dog dog =.. 2023. 12. 11.
상속과 다형성 기본 상속(Inheritance) : 한 클래스가 다른 클래스의 속성을 가져와 확정하거나 수정하는 메커니즘 입니다. 자바는 다중 상속을 지원하지 않습니다. 그래서 extends 대상은 하나만 선택할 수 있습니다. 물론 부모가 상위 부모를 가지는 것은 괜찮습니다. 만약 비행기와 자동차를 상속 받아서 하늘을 나는 자동차를 만든가고 가정해보면. 아래 그림과 같이 다중 상속을 사용하게 됩니다. AirplaneCar 입장에서 move()를 호출할 때 어떤 부모의 move() 사용해야 할지 애매한 문제가 발생합니다. 이것을 다이아몬드 문제라고 합니다. 그리고 다중 상속을 사용하면 클래스 계층 구조가 매우 복잡해질 수 있습니다. 이런 문제점 때문에 자바는 클래스의 다중 상속을 허용하지 않습니다. 대신에 인터페이스의 다중 .. 2023. 12. 11.