OOP - DI(Dependency Injection)와 서비스 로케이터
2023. 2. 26. 14:28
OOP
📌 애플리케이션 영역과 메인 영역 로버트 C 마틴(Robert C. Martin) 은 소프트웨어를 아래의 2가지 영역으로 구분하고 있다. 애플리케이션 영역 고수준 및 저수준의 구현을 포함한 영역 메인 영역 어플리케이션 영역에서 사용될 객체를 생성 / 설정 / 실행한다 각 객체간의 의존 관계를 설정한다. 애플리케이션을 실행한다. 메인 영역과 애플리케이션 간의 의존은 다음 그림과 같게 되는데, 여기서 알 수 있는 점은 모든 의존은 메인 영역에서 애플리케이션 영역으로 향한다는 것이다. 즉, 반대의 경우인 애플리케이션 -> 메인 으로의 의존은 존재하지 않는다. 이는 메인 영역을 변경하더라도 애플리케이션 영역은 변경되지 않는다는 것을 뜻하며 따라서 애플리케이션에서 사용할 객체를 교체하기 위해 메인 영역의 코드를 ..
OOP - SOLID 원칙
2022. 10. 27. 21:34
OOP
SOLID 원칙 단일 책임 원칙 (Single Responsibility Principle, SRP) 개방-폐쇄 원칙 (Open-Closed Principle, OCP) 리스코프 치환 원칙 (Liskov Substitution Principle, LSP) 인터페이스 분리 원칙 (Interface Segregation Principle, ISP) 의존성 역전 원칙 (Dependency Inversion Principle, DIP) 📌 단일 책임 원칙 (Single Responsibility Principle, SRP) 클래스는, 오직 하나의 대해서만 책임져야 한다. 만약 클래스가 여러 가지 작업을 책임져야 한다면, 이는 버그 발생 가능성을 높인다. 많은 기능 중 한 가지를 변경할 때, 자신도 모르게 다른 ..
OOP - 재사용: 상속보다 조립
2022. 4. 7. 23:11
OOP
🙋♂️ 들어가면서 객체 지향이 주는 장점은 구현 변경의 유연함이다. 유연함을 얻을 수 있도록 해주는 방법에는 추상화가 있는데 그 전에 추상화를 가능하게 해주는 다형성에 대해 살펴보자. 📌 상속 상속(Inheritance) 은 한 타입을 그대로 사용하면서 구현을 추가할 수 있도록 해주는 방법을 제공한다. 상속받은 하위 클래스는 필요에 따라 상위 클래스에 정의된 메서드를 새롭게 구현할 수 있다. 이를 재정의(overriding)라 한다. 메서드를 재정의하면, 해당 메서드를 실행할 때 상위 타입의 메서드가 아닌 하위 타입에서 재정의한 메서드가 실행된다. 상속의 장점 기존에 작성된 클래스를 재활용할 수 있다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버..
OOP - 다형성과 추상 타입
2022. 2. 14. 01:22
OOP
📌 상속이란? 상속(Inheritance) 은 한 타입을 그대로 사용하면서 구현을 추가할 수 있도록 해주는 방법을 제공한다. 상속 받은 하위 클래스는 필요에 따라 상위 클래스에 정의된 메서드를 새롭게 구현할 수 있다. 이를 재정의(overriding)라 한다. 메서드를 재정의하면, 해당 메서드를 실행할 때 상위 타입의 메서드가 아닌 하위 타입에서 재정의한 메서드가 실행된다. 상속의 장점 기존에 작성된 클래스를 재활용 할 수 있다. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 된다. 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다. 상속의 종류 1. 인터페이스 상속 다중 상속을 지원하지 않는 언어에서 다형성을..
OOP - 객체 지향
2022. 2. 4. 16:41
OOP
📌 객체 지향 소프트웨어의 가치 소프트웨어의 가치는 사용자가 요구하는 기능을 올바르게 제공하는 데 있다. 요구 사항은 언제나 변한다. 시간이 흐름에 따라 이전에 필요 없다고 생각했던 기능이 필요해질 수도 있고, 기존에 구현된 기능의 일부를 변경해야 할 수도 있다. 요구 사항이 바뀔 때, 그 변화를 더 수월하게 적용할 수 있는 장점을 얻기 위해 사용된 것이 바로 객체 지향 기법이다. 객체 지향 기법을 적용하면 소프트웨어를 더 쉽게 변경할 수 있는 유연함을 얻을 수 있다. 📌 절차 지향 절차 지향의 '절차' 의 의미는 Procedual 즉 함수를 의미한다. 절차적 프로그래밍이란 단순히 순차적인 명령 수행이 아니라 루틴, 서브루틴, 메소드, 함수 등(이를 통틀어 프로시저라고 한다.)을 이용한 프로그래밍 패러다..