Java/Object Oriented(17)
-
[Object Oriented] 좋은 객체 지향 설계의 5가지 원칙(SOLID) 2023.10.17
-
[Object Oriented] 다형성 2023.10.17
-
[Object Oriented] 객체지향이란? (1)
저자가 얻은 객체지향에 대한 통찰력을 이상한 나라의 앨리스 등에 비유해서 설명하려는 시도는 나쁘지 않았다. 저자가 객체지향의 핵심을 잘 이해해고 쓴 책이라는 점은 공감한다. 다만, 비유가 너무 장황하고, 설명이 반복적으로 등장해서 짧은 분량의 책임에도 읽는데 지루함이 느껴졌다. 말로 설명하는 대면 교육에서는 중요한 포인트는 여러 차례 강조해서 설명하는 방식을 사용하기도 하는데, 글, 특히 책에서는 반복적인 설명 보다는 중요한 부분을 여러 편집 기법으로 요약하거나 강조하고, 대신에 반복적인 비유를 줄였으면, 훨씬 전달이 잘되고 읽기도 편한 명서가 되지 않았을까 싶다. 한가지 덧붙이자면 객체지향의 기본 개념을 공부하지 않은채 이 책은 보는 것은 큰 도움이 못된다. 반대로 객체 지향의 개념과 함께 SOLID..
2023.06.19 -
[Object Oriented] 인터페이스(Interface)
인터페이스(Interface)는 추상화된 메서드들의 집합입니다. 인터페이스는 클래스와는 달리 추상 클래스처럼 인스턴스를 생성할 수 없습니다. 인터페이스는 다음과 같은 특징을 가집니다. 추상화된 메서드만 가질 수 있습니다. 인터페이스에 선언되는 메서드는 반드시 추상화되어야 합니다. 추상화된 메서드는 메서드 선언부만 있고, 메서드 구현부는 없습니다. 상수 필드를 가질 수 있습니다. 인터페이스는 상수 필드를 가질 수 있습니다. 이 상수 필드는 public static final로 선언되며, 인터페이스 내에서만 사용할 수 있습니다. 다중 상속이 가능합니다. 인터페이스는 다중 상속이 가능합니다. 따라서 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있습니다. 인스턴스를 생성할 수 없습니다. 인터페이스는 객체를..
2023.03.11 -
[Object Oriented] 팩토리 메소드(Factory Method)
팩토리 메소드란 ? 인트턴스를 메소드를 통해서 만드는 것입니다. 팩토리 메소드의 장점은 매개변수를 통해 인증된 사람만 메소드에 접근할수 있게 만들어 무분별한 인스턴스생성을 막아주기 때문에 자원을 효율적으로 사용할수 있습니다. 코드 예시는 다음과 같습니다. package com.knight.oop; // 생성될 객체의 공통 인터페이스 interface Product { public void operation(); } public class FactoryMehtod { } // Product 인터페이스를 구현하는 구체 클래스1 class ConcreteProduct1 implements Product { @Override public void operation() { System.out.println("Co..
2023.03.09 -
[Object Oriented] 추상 클래스
동일한 메소드를 가지는 여러개의 객체가 있다고 가정했을때, 각 객체마다 그 메소드를 구현한다면 코드의 중복으로 불필요한 작업이 생기며, 리팩토링할때 총 3번의 작업이 필요합니다. 그러한 이유때문에 부모클래스를 만들어 중복되는 코드를 없애고, 코드를 한곳에 집중할수 있습니다. 코드를 집중화 하면 그를 상속받는 자식클래스들의 동작이 일괄처리 가능합니다. Shap[] shapes {new Circle(), new Rect(), new Line}; 같이 부모클래스를 통해 자식클래스 인스턴스가 가능합니다. 하지만 다음과 같은 문제가 발생합니다. move() 메소드는 동일한 기능을 하기때문에 부모클래스에 구현을 해놓은상태입니다. paint() 메소드는 이름만 같을뿐 자식클래스에서 각각 전혀다른 기능을 필요로 하기때..
2023.03.09