본문 바로가기

전체 글181

SOLID(객체 지향 설계 원칙) http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod ArticleS.UncleBob.PrinciplesOfOodThe Principles of OOD What is object oriented design? What is it all about? What are it's benefits? What are it's costs? It may seem silly to ask these questions in a day and age when virtually every software developer is using an object oriented languagebutunclebob.comSOLID는 객체 지향 프로그래밍에서의 다섯 가지 원칙을 의미합니다... 2024. 8. 5.
OCP(Open-Closed Principle, 개방-폐쇄 원칙) OCP(Open-Closed Principle, 개방-폐쇄 원칙)은 객체 지향 프로그래밍의 SOLID 원칙 중 하나로, 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다는 원칙을 의미합니다. 즉, 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있도록 설계해야 한다는 것입니다. OCP의 주요 개념확장에 열려 있어야 한다(Open for extension): 새로운 기능이나 요구사항이 생길 때, 기존 코드를 변경하지 않고 확장할 수 있어야 합니다.변경에 닫혀 있어야 한다(Closed for modification): 기존의 잘 작동하는 코드를 변경하지 않고도 새로운 기능을 추가할 수 있어야 합니다. 이를 통해 기존 기능의 안정성을 유지할 수 있습니다.O.. 2024. 8. 5.
POJO(Plain Old Java Object) POJOPOJO(Plain Old Java Object)는 특별한 규약이나 상속 없이 순수하게 자바 언어만으로 작성된 객체를 의미합니다. 이는 특정 프레임워크나 라이브러리에 종속되지 않고, 자바 객체 본연의 형태를 유지하는 것을 강조합니다. POJO는 다음과 같은 특징을 가지고 있습니다:간단성: POJO는 복잡한 프레임워크 인터페이스나 클래스를 상속받지 않습니다. 대신, 표준 자바 클래스로서 필요한 필드, 메서드(게터와 세터 포함)를 가지며, 다른 일반 자바 객체처럼 작동합니다.재사용 가능성과 테스트 용이성: POJO는 의존성이 적기 때문에 다른 환경에서 재사용하기 쉽고, 단위 테스트하기에도 간편합니다.투명성: POJO는 특정 프로토콜이나 환경에 종속되지 않기 때문에 코드의 명확성과 이해하기 쉬움을 제공.. 2024. 8. 5.
Separation of Concerns(관심사 분리) 관심사의 분리(Separation of Concerns) 원칙 설명"관심사의 분리(Separation of Concerns, SoC)"는 소프트웨어 설계에서 중요한 원칙 중 하나입니다. 이 원칙은 프로그램의 각 부분이 서로 다른 기능이나 관심사에만 집중하도록 설계되어야 한다는 것을 의미합니다. 이를 통해 코드의 가독성, 유지보수성, 재사용성이 크게 향상됩니다. 자바에서는 클래스를 통해 관심사를 분리할 수 있으며, 다양한 방법으로 구현될 수 있습니다. 대표적인 예로는 모듈화, 계층화, 컴포넌트 기반 개발 등이 있습니다. 주요 개념모듈화: 프로그램을 기능별로 분리된 모듈로 나누어, 각 모듈이 특정 역할만 수행하도록 합니다.응집도: 각 모듈 내의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내며, 높은 응집.. 2024. 8. 5.
#24 Concurrency 2 자바 공식 Concurrency 튜토리얼 Liveness적시에 실행할 수 있는 동시 응용 프로그램의 기능을 활성 상태(liveness)라고 합니다. 이 섹션에서는 가장 일반적인 종류의 활동성(liveness) 문제인 교착 상태(deadlock)에 대해 설명하고 계속해서 다른 두 가지 활동성 문제인 기아 및 라이브락(starvation and livelock)에 대해 간략하게 설명합니다. Deadlock교착 상태(Deadlock)는 둘 이상의 스레드가 서로를 기다리며 영원히 차단되는 상황을 설명합니다. 여기에 예가 있습니다.Alphonse와 Gaston은 친구이며 예의를 중요시합니다. 친구에게 인사를 할 때 친구가 인사에 대한 응답을 할 때까지 인사를 하고 있어야 한다는 엄격한 예절이 있습니다. 불행하게도.. 2024. 8. 5.
2024.08.05 (월) { Concerns, 다형성(Polymorphism), 어그리게이션&컴포지션, UML Class Diagram } Concerns "Concerns"는 소프트웨어 개발에서 특정 관심사 또는 문제 영역을 의미합니다. 관심사는 시스템의 특정 부분 또는 기능과 관련된 모든 것을 포괄하는 개념입니다. 예를 들어, 보안, 데이터베이스 액세스, 사용자 인터페이스, 비즈니스 로직 등은 모두 개별적인 관심사로 볼 수 있습니다. 다형성(Polymorphism) 객체 지향 프로그래밍의 핵심 개념 중 하나로, 같은 인터페이스나 상위 클래스에서 정의된 메서드를 다양한 방법으로 구현하는 능력을 말합니다. 다형성은 코드의 유연성과 재사용성을 높이는 데 중요한 역할을 합니다. 다형성의 종류컴파일 타임 다형성 (Compile-time Polymorphism)런타임 다형성 (Runtime Polymorphism)1. 컴파일 타임 다형성 (Comp.. 2024. 8. 5.