Today I Learned
-
프로그래밍 - 객체지향 프로그래밍(OOP)Today I Learned/CS공부 2023. 12. 31. 19:45
객체지향 프로그래밍 (Object Oriented Programming) 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 매서드를 활용하는 방식을 말합니다. 설계에 많은 시간이 소요되며 처리 속도가 다른 프로그래밍패러다임에 비해 상대적으로 느립니다. 객체지향 프로그래밍 특징 추상화 : 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것 캡슐화 : 객체와 속성과 매서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것 상속성 : 상위 클래스의 특성을 하위 클래스가 이어받아 재사용하거나 추가, 확장하는 것 다형성 : 하나의 매서드나 클래스가 다양한 방법으로 동작하는 것 (오버로딩, 오버라이딩) 오버로딩 : 같은 이름을 가진 매서드를 ..
-
프로그래밍 - 선언형 프로그래밍, 함수형 프로그래밍Today I Learned/CS공부 2023. 12. 30. 19:45
1. 선언형 프로그래밍(Declarative Programming) 선언형 프로그래밍은 코드가 어떻게 실행되는지에 대한 명확한 지시를 제공하는 대신에, 원하는 결과를 묘사하는 스타일의 프로그래밍입니다. 즉, 코드가 무엇을 하는지에 집중합니다. 예를 들어 SQL은 선언형 프로그래밍의 한 예로, 데이터베이스에서 원하는 데이터를 가져오는 방법을 명시하지만, 실제로 데이터가 어떻게 가져와지는지에 대한 구체적인 절차는 명시하지 않습니다. 2. 함수형 프로그래밍(Functional Programming) 함수형 프로그래밍은 함수의 사용을 중심으로 하는 프로그래밍 패러다임입니다. 함수형 프로그래밍은 부작용을 최소화하고, 불변성을 유지하며, 함수를 일급 객체로 취급하여 데이터를 처리하는 방식을 강조합니다. 함수형 프로..
-
디자인패턴 6. 프록시패턴, 프록시 서버Today I Learned/CS공부 2023. 12. 28. 19:44
프록시 패턴(Proxy pattern) 프록시 패턴은 해당 객체에 접근하기 전 그 접근에 대한 흐름을 가로채, 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 활용하기도 한다. 프록시 서버는 서버와 클라이언트 사이에서, 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 가리킨다. 예를들어 nginx는 비동기이벤트 기반의 구조와, 다수의 연결을효과적으로 처리 가능한 웹 서버이며, 주로 Node.js 서버 앞단의 프록시 서버로 활용된다. 또한, CloudFlare는 웹 서버의 앞단에 프록시 서버로 두어 DDOS(짧은시간동안 네트워크에 많은 요청을 보내 웹..
-
디자인패턴 5 - MVC, MVP , MVVM 패턴Today I Learned/CS공부 2023. 12. 26. 19:44
1. MVC 패턴 MVC패턴은 모델, 뷰, 컨트롤러로 이루어진 패턴입니다. 모델(Model): 데이터와 데이터를 처리하는 부분을 담당합니다. 데이터의 상태를 유지하고, 데이터를 조작하거나 변경하는 작업을 수행합니다. 뷰(View): 사용자에게 보여지는 부분으로, 사용자 인터페이스를 담당합니다. 모델에서 가져온 데이터를 시각적인 형태로 표현하며, 사용자와의 상호작용을 담당합니다. 컨트롤러(Controller): 사용자 입력을 처리하고 그에 따라 모델과 뷰를 업데이트하는 부분입니다. 사용자가 뷰를 통해 요청을 하면 컨트롤러가 이를 수신하여 모델을 업데이트하고, 변경된 내용을 뷰에 반영합니다. 2. MVP 패턴 MVP패턴은 MVC패턴에서 파생되어, MVC의 C에 해당하는 컨트롤러가 프레젠터 (presenter..
-
디자인패턴 4- 이터레이터 패턴, 노출모듈 패턴Today I Learned/CS공부 2023. 12. 24. 19:43
이터레이터 패턴 이터레이터 패턴이란, 이터레이터(interator)를 사용하여 컬렉션의 요소들에 접근하는 디자인패턴이다. 이를 통해 순회할 수 잇는 여러 가지 자료형의 구조와는 상관없이, 이터레이터라는 하나의 인터페이스로 순회가 가능하다. 노출모듈 패턴 노출모듈 패턴은 즉시 실행함수를 통해 public, private같은 접근 제어자를 만드는 패턴이다. 자바스크립트는 private이나 public같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행되기 때문에, 노출 모듈 패턴을 통해 private이나 public접근 제어자를 구현하기도 한다. public : 클래스에서 정의된 함수에서 접근 가능하며, 자식 클래스와 외부 클래스가 접근 가능한 범위 protected : 클래스에 정의된 함수에서 ..
-
디자인 패턴 3- 옵저버 패턴, 프록시 객체Today I Learned/CS공부 2023. 12. 23. 19:43
옵저버 패턴(Observer Pattern) 옵저버 패턴은 주체가 어떤 객체의 상태 변화를 관찰하다가, 상태 변화가 있을 때마다 매서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인패턴이다. 여기서 주체란, 객체의 상태변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 매서드 등을 기반으로 추가 변화 사항이 생기는 객체들을 의미한다. 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며, MVC (model-controller-view) 패턴에도 사용된다. 예를들어, 주체라고 볼 수 있는 모델(model)에서 변경 사항이 생겨 update() 매서드로 옵저버인 뷰에 알려주고 이를 기반으로 컨트롤러가 작동하는 것도 옵저버패턴의 한 예라고 할 수 있다. 자바스크립..
-
디자인 패턴 2. 팩토리 패턴, 전략 패턴Today I Learned/CS공부 2023. 12. 22. 19:42
1. 팩토리 패턴 팩토리 패턴(Factory pattern)은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 상위 클래스와 하위 클래스가 분리되기 때문에, 느슨한 결합을 가지며 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 된다. 그리고 객체 생성 로직이 따로 떼어져 있기 때문에, 코드를 리팩토링 하더라도 한 곳만 고칠 수 있게 되니 유지보수성이 증가된다. 2. 전략 패턴 전략 패턴은 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고, 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔..
-
디자인 패턴 1. 싱글톤 패턴 (TDD, 의존성 주입)Today I Learned/CS공부 2023. 12. 21. 18:42
디자인 패턴이란 프로그램설계시 발생한 문제점을 객체간의 상호관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것을 의미한다. 1. 싱글톤 패턴 싱글톤패턴은 하나의 클래스에 오직 하나의 인스턴스만을 가지는 패턴으로써, 하나의 클래스를 기반으로 여러개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용한다. 싱글톤패턴은 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다는 장점이 있으나, 의존성이 높아진다는 단점이 있다. 싱글톤패턴은 TDD(테스트주도개발)을 할 때 걸림돌이..