Computer Science/프로그래밍 이론

Computer Science/프로그래밍 이론

[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향)

프로그래밍 패러다임 (programming paradigm) 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 객체지향 프로그램이과 함수형 프로그래밍을 예로 들어보자. 객체지향 프로그래밍 : 상호작용하는 객체들의 집합 함수형 프로그래밍 : 상태 값을 지니지 않는 함숫값들의 연속 Java의 프로그래밍 패러다임 jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원했었지만, 이후로는 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했다. 추가로 선언형 프로그래밍을 위해 스트림(stream) 표준 API도 추가했다. 선언형 프로그래밍과 함수형 프로그래밍 선언형 프로그래밍(declarative programming)은 '..

Computer Science/프로그래밍 이론

[CS] SOLID : 객체지향 설계 5 원칙

SOLID 객체지향의 4대 특성에 기반하기 때문에 5가지 모두 유사한 모양을 가지고 있다. 1. SRP(Single Resoponsibility Principle) : 단일 책임 원칙 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 한 가지뿐이어야 한다. 변경에 의한 연쇄작용 감소 가독성 향상 유지보수 용이 서로 밀접한 관계가 있는 기능끼리 클래스로 묶고, 서로 다른 기능을 하는 클래스를 최대한 떨어뜨려놓는 것이 좋다. 이렇게 하면 문제가 발생하더라도 문제가 발생한 부분과 관련 없는 동작에는 영향을 미치지 않거나, 그 영향이 작아질 수 있다. 즉, 객체지향 설계의 이점을 살려서 유지보수를 용이하게 만들어 줘야 한다. 2. OCP(Open Closed Principle..

Computer Science/프로그래밍 이론

[CS] 객체지향 4대 특성(캡슐화, 상속, 다형성, 추상화)

객체지향의 4대 특성 : 캡슐화, 상속, 다형성, 추상화 1. 캡슐화 ( Encapsulation ) 객체의 속성(Variable)을 보호하기 위해 사용한다. 객체와 객체 간의 의사소통을 위해 필요한 정보만을 노출한다. 실제 내부 구현 정보는 숨긴다. [ Method 설계 ] 자신이 가지고있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다. 실물 객체가 가진 기능을 모두 제공해야 한다. 각각의 Method는 서로 관련성이 있어야 한다. ( getter - setter ) (add - delete ) 등 Getter / Setter : 외부에서 내부 속성에 직접 접근하지 못하도록 사용 CRUD Method : 데이터 처리를 위한 기본적인 CRUD Method 제공 Business Logic M..

Computer Science/프로그래밍 이론

[Computer Science/디자인 패턴] 전략 패턴(strategy pattern)

전략 패턴(strategy pattern) 전략 패턴은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우에 직접 수정하지 않고 "전략"이라고 부르는 "캡슐화된 알고리즘"을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 비즈니스 로직을 인터페이스로 만들고, 해당 인터페이스를 구현한 클래스를 사용하도록 만드는 것이라고 생각하면 된다. 우선 Java 코드를 이용한 기본 예제로 알아보고, 추가로 Spring에서 어떻게 전략 패턴을 사용하는지 알아보자. Java 기본 예제 예제로 알아보자. interface : Payment public interface Payment { void pay(int amount); } 구현체 1 : KakaoCardPayment..

Computer Science/프로그래밍 이론

[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조

스프링 부트의 동작 구조 스프링 부트의 기본 의존성 중 하나인 spring-boot-starter-web 모듈을 사용하면, 기본적으로 내장 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 클라이언트의 요청이 들어오면 서블릿이 이를 처리해야 하는데, 서블릿은 서블릿 컨테이너에서 관리하고, 톰캣이 서블릿 컨테이너의 역할과 WAS(Web Application Server)의 역할을 담당한다. 서블릿(Servlet)은 클라이언트의 요청을 처리하고, 결과를 반환하는 자바의 웹 프로그래밍 기술이다. 서블릿 컨테이너의 특징 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다. 서블릿 객체는 싱글톤 패턴으로 관리된다. 멀티 스레딩을 지원한다. Dispatcher Servlet 이란..

Computer Science/프로그래밍 이론

[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리

각 디자인 패턴들에 대해 공부하고 정리할 때마다 정리한 글의 링크를 첨부할 예정이다. 디자인 패턴이란? 디자인 패턴은 소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위한 해결책들이다. 상황에 맞는 최적의 디자인 패턴을 결정해서 사용하는 것이 좋다. [ GoF 디자인 패턴 ] 대표적인 디자인 패턴 분류 방식이다. (GoF는 디자인 패턴을 구체화하고 체계화해서 분류한 4명의 인물을 의미한다.) GoF 디자인패턴 분류 방식에 따르면 크게 3가지로 구분된다. 생성 패턴 객체 생성에 사용되는 패턴으로, 객체를 수정해도 호출부가 영향을 받지 않게 한다. 구조 패턴 객체를 조합해서 더 큰 구조를 만드는 패턴이다. 행위 패턴 객체 간의 알고리즘이나 책임 분배에 관한 패턴이다. 객체 하나로는 수행할 수 없는 작..

Computer Science/프로그래밍 이론

[ComputerScience / 디자인 패턴] 브릿지 패턴(Bridge Pattern, 가교 패턴)

브리지 패턴(Bridge Pattern) 브리지 패턴은 기능 계층과 구현 계층을 분리하여 시스템의 확장성과 유지보수성을 높이는 패턴 기능 계층은 새로운 기능을 위해 메서드를 추가할 수 있는 클래스들을 말한다. 구현 계층은 이미 존재하는 인터페이스에 대한 구현 클래스들을 말한다. 기능은 인터페이스를 통해 정의 및 이용되고 해당 인터페이스를 따르는 클래스를 통해 구현된다. 사용자는 추상부와 구현부를 독립적으로 수정 및 확장할 수 있다. 객체지향 설계의 SOLID 원칙 중 단일 책임 원칙(SRP)과 개방 폐쇄 원칙(OCP)에 부합한 패턴이다. 기능 계층을 Book 클래스로, 구현계층의 인터페이스를 Display로 설정한 예제를 통해 알아보자. 예제 브리지 패턴은 기능 계층과 구현 계층을 분리하여 시스템의 확장..

Computer Science/프로그래밍 이론

[Spring / 스프링 부트 핵심 가이드] 레이어드 아키텍처, SpringMVC

레이어드 아키텍처(Layered Archiecture) 레이어드 아키텍처는 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어(계층)로 묶어 수평적으로 구성한 구조를 말한다. 일반적으로 프레젠테이션 계층, 비즈니스 계층, 데이터 접근 계층의 3계층으로 구성된다. (4 계층이라고 표현할 경우, 인프라 계층(데이터베이스)까지 포함한 것이다.) 우리가 일반적으로 Spring을 배우고, 사용하다 보면 자연스럽게 Controller - Service - Repository의 순서로 데이터베이스에 접근하고, 역순으로 응답을 전달하게 된다. 여기서 각각 Controller가 프레젠테이션 계층, Service가 비즈니스 계층, Repository가 데이터 접근 계층이라고 보면 된다. 프레젠테이션 계층(Present..

HSRyuuu
'Computer Science/프로그래밍 이론' 카테고리의 글 목록