본문 바로가기
728x90
반응형

전체 글231

선언형과 함수형 프로그래밍(면접을 위한 CS 전공지식 노트) 선언형과 함수형 프로그래밍 선언형과 함수형 프로그래밍 선언형 프로그래밍 (Declarative Programming): 선언형 프로그래밍은 **무엇(What)**을 할 것인지에 집중하는 프로그래밍 스타일입니다. 이 스타일에서는 코드가 목표하는 상태를 명세하고, 시스템은 그 명세에 맞게 동작하도록 합니다. 프로그래머는 어떻게(How) 동작하는지에 대한 구체적인 세부 사항보다는 원하는 결과에 초점을 맞추게 됩니다. 예를 들어, SQL (Structured Query Language)은 선언형 프로그래밍의 좋은 예입니다. SQL 쿼리를 사용하여 데이터베이스에서 원하는 데이터를 검색할 때, 당신은 어떤 데이터를 원하는지를 명시하고 데이터베이스 시스템이 그 요구사항을 처리합니다. 이때 어떻게 데이터가 가져와지는지.. 2023. 8. 17.
MVVM 패턴(면접을 위한 CS 전공지식 노트) MVVM 패턴 MVVM 패턴 MVVM 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 애플리케이션의 사용자 인터페이스(UI)와 비즈니스 로직을 분리하여 관리하고, 코드의 가독성과 유지보수성을 향상하는데 도움을 주는 패턴입니다. MVVM은 Model-View-ViewModel의 약자로, 세 가지 주요 구성요소로 구성됩니다. MVVM패턴 구성요소 Model: 모델은 애플리케이션의 데이터와 비즈니스 로직을 포함하는 부분입니다. 데이터베이스에서 가져온 정보, 웹 서비스와의 통신 결과물 등이 모델에 해당합니다. 모델은 UI나 뷰와 독립적으로 존재하며, 데이터의 변경을 통지하여 뷰나 뷰모델에 변화를 전달합니다. View: 뷰는 사용자 인터페이스를 나타냅니다. 이 부분은 사용자가 실제로 보고 상호작용하는.. 2023. 8. 16.
MVP 패턴 패턴(면접을 위한 CS 전공지식 노트) MVP 패턴 MVP 패턴 MVP(Mode-View-Presenter) 패턴은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 사용자 인터페이스를 개발하는 데 도움을 주는 패턴입니다. MVP 패턴은 코드의 구조화와 유지보수를 용이하게 하며, UI 로직과 비즈니스 로직을 분리하여 개발을 더 모듈화 하고 테스트하기 쉽게 합니다. 이 패턴은 주로 웹 및 데스크톱 응용 프로그램에서 사용되지만, 다른 플랫폼에서도 유사한 개념으로 활용될 수 있습니다. MVP패턴 구성요소 Model (모델): 모델은 애플리케이션의 비즈니스 로직과 데이터를 처리하는 역할을 담당합니다. 데이터베이스에서 데이터를 가져오거나 수정하고, 필요한 연산을 수행하며, 이러한 데이터를 가공하여 프레젠터에게 전달합니다. 모델은 UI와 독립적으로 .. 2023. 8. 15.
MVC 패턴(면접을 위한 CS 전공지식 노트) MVC 패턴 MVC패턴 MVC 패턴(MVC Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 소프트웨어의 구조를 세 가지 주요 컴포넌트로 분리하여 애플리케이션의 개발과 유지보수를 더욱 효율적으로 만드는데 목적이 있습니다. MVC는 Model-View-Controller의 약자로, 각각의 컴포넌트는 특정 역할을 수행하며 서로 상호작용합니다. MVC 패턴의 세 가지 주요 컴포넌트 Model (모델): 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 데이터의 저장, 검색, 수정, 삭제 등의 작업을 처리하며, 데이터의 변화를 추적합니다. 모델은 UI나 사용자 인터페이스와 독립적으로 동작하며 데이터 관리에만 집중합니다. View (뷰): 사용자에게 데이터를 시각적으로 표현하고 표시하는 역.. 2023. 8. 14.
노출모듈 패턴(면접을 위한 CS 전공지식 노트) 노출모듈 패턴 노출모듈 패턴 노출모듈 패턴(Exposure Module Pattern)은 소프트웨어 디자인 패턴의 하나로, 복잡한 시스템이나 애플리케이션에서 모듈 간의 의존성을 최소화하고 모듈들 사이의 상호작용을 단순화하기 위한 패턴입니다. 이 패턴은 대규모 프로젝트나 복잡한 소프트웨어 아키텍처에서 특히 유용하며, 모듈화를 통해 유지보수성을 개선하고 개발 과정을 더욱 용이하게 만드는데 목적이 있습니다. 노출모듈 패턴의 핵심 아이디어 모듈 간의 의존성 최소화: 노출모듈 패턴은 시스템의 모듈들을 각각의 역할과 책임에 따라 분리합니다. 이때, 각 모듈은 외부 모듈들과 최소한의 의존성만을 가지며, 필요한 정보나 기능을 노출(공개)합니다. 이렇게 하면 모듈 간의 결합도를 낮출 수 있어, 한 모듈의 변경이 다른 모.. 2023. 8. 13.
이터레이터 패턴(면접을 위한 CS 전공지식 노트) 이터레이터 패턴 이터레이터 패턴 이터레이터 패턴은 소프트웨어 디자인 패턴 중 하나로, 컬렉션(데이터의 집합)을 반복(iterate)하면서 내부 구조를 노출하지 않고 순차적으로 접근할 수 있는 방법을 제공하는 패턴입니다. 이터레이터 패턴은 객체 지향 프로그래밍에서 많이 사용되며, 컬렉션의 내부 구조가 변경되더라도 이터레이터 인터페이스를 수정하지 않고도 반복 동작을 유지할 수 있도록 도와줍니다. 이터레이터 패턴 주요 컴포넌트 Iterator (이터레이터): 컬렉션 내의 항목들을 반복하는 인터페이스를 정의합니다. 주로 next() 메서드와 현재 위치나 종료 여부를 판단하는 hasNext() 메서드를 포함합니다. Concrete Iterator (구체적인 이터레이터): Iterator 인터페이스를 구체화하여 실.. 2023. 8. 12.
프록시 패턴과 프록시 서버(면접을 위한 CS 전공지식 노트) 프록시 패턴과 프록시 서버 프록시 패턴 프록시 패턴은 소프트웨어 디자인 패턴의 하나로, 다른 객체에 대한 대리자나 대변 역할을 하는 객체를 제공하는 패턴입니다. 이 패턴은 다른 객체에 접근할 때 추가적인 제어를 가능하게 해 주거나, 객체의 생성 및 초기화를 지연시키는 등의 목적으로 사용될 수 있습니다. 프록시 서버 프록시 서버는 네트워크 환경에서 중계 역할을 수행하는 서버입니다. 클라이언트가 웹 페이지나 다른 리소스에 접근하려고 할 때, 이러한 요청을 프록시 서버를 통해 보내게 되면 프록시 서버가 대신 해당 요청을 처리하거나 중계합니다. 이를 통해 몇 가지 장점을 얻을 수 있습니다. 프록시란? 프록시는 어떤 것을 대신하여 처리하거나 중계하는 역할을 하는 중개자나 대리자를 가리키는 개념입니다. 컴퓨터 과학.. 2023. 8. 11.
옵저버 패턴(면접을 위한 CS 전공지식 노트) 옵저버 패턴 옵저버 패턴 옵저버 패턴은 소프트웨어 디자인 패턴 중 하나로, 객체의 상태 변화를 관찰하고 이에 따른 동작을 행하는 구조를 정의하는 패턴입니다. 이 패턴은 주로 객체 간의 의존성을 줄이고, 느슨한 결합(Loose Coupling)을 이루며, 객체 간의 상호작용을 효과적으로 관리하고 확장하기 위해 사용됩니다. 옵저버 패턴 구성요소 Subject (주체) 또는 Observable (관찰 대상): 상태 변화를 관찰하고자 하는 객체입니다. 이 객체는 옵저버들의 목록을 유지하며, 상태가 변경될 때마다 등록된 옵저버들에게 알림을 보냅니다. Observer (관찰자): 주체(Subject)의 상태 변화를 관찰하고 이에 따른 특정 동작을 수행하는 객체입니다. 옵저버들은 주체에 등록되어야 하며, 주체가 상태.. 2023. 8. 10.
전략 패턴(면접을 위한 CS 전공지식 노트) 전략 패턴 전략 패턴 전략 패턴은 소프트웨어 디자인 패턴의 하나로, 객체 지향 프로그래밍에서 자주 사용되는 개념입니다. 이 패턴은 다양한 상황에서 유용하게 적용할 수 있는 알고리즘 또는 동작 방식을 캡슐화하고, 이를 객체로 만들어 상황에 맞게 교체하거나 조합할 수 있는 유연성을 제공합니다. 이를 통해 시스템의 유지 보수성과 확장성을 향상할 수 있습니다. 전략 패턴 구성 요소 전략(Strategy): 알고리즘을 추상화한 인터페이스나 추상 클래스입니다. 여러 다른 알고리즘들이 구체적으로 구현되어 이 인터페이스를 따르게 됩니다. 구체적인 전략(Concrete Strategies): 실제 알고리즘 구현체로, 전략 인터페이스를 구현하여 특정한 동작을 수행하는 클래스들입니다. 전략 컨텍스트(Context): 전략 .. 2023. 8. 9.
728x90
반응형