객체지향프로그래밍 6

SOLID 5원칙 - DIP 의존관계 역전 원칙(Dependency inversion principle)

프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다." 의존성 주입은 이 원칙을 따르는 방법 중 하나다. 쉽게 이야기해서 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻입니다. 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있습니다. 구현체에 의존하게 되면 변경이 아주 어려워집니다. 바로 DIP를 위반한 코드를 보여드리면서 설명 드리도록 하겠습니다. interface Car{ void rideCar(); } class Tesla implements Car{ @Override public void rideCar() { System.out.println("Tesla에 탑승했습니다."); } } class Genesis implements Car { @Override publ..

SOLID 5원칙 - ISP 인터페이스 분리 원칙(Interface Segregation Principle)

인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다. 즉 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터 페이스 하나보다 낫다 라는 뜻 입니다. 바로 예시 코드를 들어 간단하게 설명 하도록 하겠습니다. 우선 ISP를 위반한 코드를 보여드리겠습니다. interface Car{ void rideCar(); void Accel(); void stop(); void UseElectric(); } class K3 implements Car{ @Override public void rideCar() { System...

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

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현 체는 믿고 사용하려면, 이 원칙이 필요하다. 단순히 컴파일을 실패하고 성공하는 것을 얘기하는 것이 아니다. 즉, 상위타입에서 어떤 동작하는 기능이 있는데 이를 확장한 하위타입에서도 상위타입과 동일하게 동작해야 합니다. 위키백과에 실려있는 전형적인 위반의 예로 코드를 만들어 보겠습니다. 너비와 높이의 조회(getter) 및 할당(setter) 메서드를 가진 직사각형 클래스로부터 정사각형 클래스를 파생하는 경우를 들 수 있습니다. 편의상 getter는 생략하겠습니다. package SOL..

SOLID 5원칙 - OCP 개방 폐쇄 원칙(Open/Closed Principle)

소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현하는 것이다.개방-폐쇄 원칙이 잘 적용되면, 기능을 추가하거나 변경해야 할 때 이미 제대로 동작하고 있던 원래 코드를 변경하지 않아도, 기존의 코드에 새로운 코드를 추가함으로써 기능의 추가나 변경이 가능합니다. 만약 이 원칙을 지키지 않으면 어떤일이 발생하는지 코드로 먼저 보여드리겠습니다. class Car{ String name; String brand; public Car(String name, String brand) { this.name = name; this.brand = brand; } } public class ..

SOLID 5원칙 - SRP 단일 책임 원칙(Single Responsibility Principle)

컴퓨터 프로그래밍에서 SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 출처 - 위키백과 SRP 단일 책임 원칙(Single Responsibility Principle) 이란?? 한 클래스는 하나의 책임만 가져야 한다. 다른말로는 클래스를 변경하는 이유는 단 한개여야 한다. 라는 원칙입니다. 하나의 책임? 솔직히 처음 접하면 무슨말인지 이해하기 참 어렵습니다. 아주 유명하신 로버트 마틴이라는 분이 말하시는 SRP는 하나의 클래스가 변경되어야 하는 사유는 하나여야 한다. 소프트웨어를 더 쉽게 구현하고 변경으로 인하여 예상못한 부작용을 방지하기 위함입니다. 사용자의 요..

객체 지향 프로그래밍 (Object-Oriented Programming) 이란? - JAVA

객체 지향 프로그래밍(OOP)의 정의는 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 출처 - 위키백과 이 사전적 의미만 보고 이해가 안 가거나 그래서 객체 지향 프로그래밍은 왜 쓰는 거야? 라는 의문이 들을 수 있다. 일단 객제지향이라 하면 비슷한 변수와 기능(함수)들을 묶어 하나의 객체로 만들어 사용합니다. 객체지향언어의 주요 특징으로는 다음과 같습니다. 코드의 재사용성이 높다. 코드의 관리가 용이하다. 신뢰성이 높은 프로그래밍을 가능하게 한다. 재사용성, 유지보수, 중복된 코드의 제거 세가지 관점에서 보면 이해하기 쉬울 것 입니..