728x90
반응형

전체 글 41

📌 의존성 주입(DI - Dependency Injection) 자세히 설명 🚀

📌 의존성 주입(DI - Dependency Injection) 자세히 설명 🚀의존성 주입(DI)은 객체 간의 의존성을 직접 생성하는 것이 아니라, 외부에서 주입하는 설계 패턴이다.이를 통해 객체 간의 결합도를 낮추고 유지보수성을 높일 수 있다.1. DI(Dependency Injection)의 핵심 개념개념 설명의존성(Dependency)하나의 클래스가 다른 클래스의 기능을 사용할 때, 이 두 클래스 간의 관계를 "의존성"이라고 함의존성 직접 생성 (Bad Practice)클래스 내부에서 new Class()로 객체를 직접 생성하는 방식. 유지보수 어려움의존성 주입 (Best Practice)클래스 내부에서 직접 객체를 생성하지 않고, 외부에서 주입받는 방식결합도(Coupling) 감소DI를 사용하..

CS/Algorithm 2025.02.03

📌 디자인 패턴 (Design Patterns) – TypeScript로 상세 정리

📌 디자인 패턴 (Design Patterns) – TypeScript로 상세 정리디자인 패턴은 자주 발생하는 소프트웨어 설계 문제를 해결하기 위한 일반적인 해결책이다.유지보수성과 확장성이 뛰어난 코드를 작성하는 데 도움을 준다.1. 디자인 패턴 개요디자인 패턴은 3가지 주요 유형으로 분류된다.패턴 유형 설명 대표 패턴생성(Creational) 패턴객체 생성 방법을 최적화Singleton, Factory, Builder구조(Structural) 패턴클래스나 객체의 구조를 조정하여 효율적인 설계 제공Adapter, Decorator, Facade행동(Behavioral) 패턴객체 간의 상호작용을 최적화Observer, Strategy, Command2. 생성(Creational) 패턴객체를 효율적으로 생..

CS/Algorithm 2025.02.02

📌 SOLID 원칙 – 객체지향 프로그래밍의 핵심 설계 원칙

📌 SOLID 원칙 – 객체지향 프로그래밍의 핵심 설계 원칙SOLID 원칙은 유지보수성과 확장성을 높이기 위해 객체지향 프로그래밍(OOP)에서 필수적으로 고려해야 하는 5가지 설계 원칙이다.이를 준수하면 유연하고 확장 가능하며, 결합도가 낮은 코드를 작성할 수 있다.1. SOLID 원칙 개요원칙 설명 해결하는 문제Single Responsibility Principle (SRP)하나의 클래스는 하나의 책임(기능)만 가져야 한다.클래스가 너무 많은 역할을 할 경우 유지보수 어려움Open/Closed Principle (OCP)기존 코드를 수정하지 않고 기능을 확장할 수 있어야 한다.새로운 기능 추가 시 기존 코드 변경으로 인한 버그 발생Liskov Substitution Principle (LSP)자식 ..

CS/Algorithm 2025.02.02

📌 객체지향 프로그래밍(OOP) - TypeScript로 자세히 정리

📌 객체지향 프로그래밍(OOP) - TypeScript로 자세히 정리객체(Object)를 중심으로 설계하는 프로그래밍 패러다임으로, 캡슐화, 상속, 다형성, 추상화를 기반으로 함.코드의 재사용성과 유지보수성을 높이는 핵심 개념.1. OOP의 4대 원칙객체지향 프로그래밍(OOP)의 핵심 개념은 다음과 같습니다.원칙 설명캡슐화 (Encapsulation)데이터를 외부에서 직접 접근하지 못하게 하고, 메서드를 통해 조작상속 (Inheritance)부모 클래스의 속성과 메서드를 자식 클래스가 재사용다형성 (Polymorphism)같은 인터페이스/부모 클래스를 공유하는 객체들이 서로 다른 동작을 할 수 있도록 함추상화 (Abstraction)불필요한 세부사항을 숨기고, 중요한 부분만 노출2. 캡슐화 (Encap..

CS/Algorithm 2025.02.02

📌 객체지향 프로그래밍(OOP), SOLID 원칙, 디자인 패턴, DI - TypeScript 예제 포함 상세 설명

1. 객체지향 프로그래밍 (OOP)객체(Object)를 중심으로 설계하는 프로그래밍 패러다임으로, 캡슐화, 상속, 다형성, 추상화를 기반으로 함.1.1 OOP의 4대 원칙원칙설명TypeScript 적용캡슐화 (Encapsulation)데이터를 외부에서 직접 접근하지 못하게 하고, 메서드를 통해 조작private 또는 protected 키워드 사용상속 (Inheritance)부모 클래스의 속성과 메서드를 자식 클래스가 재사용extends 키워드 사용다형성 (Polymorphism)같은 인터페이스/부모 클래스를 공유하는 객체들이 서로 다른 동작을 할 수 있도록 함interface 또는 abstract class 활용추상화 (Abstraction)불필요한 세부사항을 숨기고, 중요한 부분만 노출abstract ..

CS/Algorithm 2025.02.02

[cs]깃(Git)이란?

깃(Git)이란?Git은 분산 버전 관리 시스템으로, 프로젝트의 로컬 복제본이 완전한 버전 제어 레포지토리가 됩니다. 이를 통해 오프라인 및 원격에서 버전 관리가 가능하며, 개발자는 로컬에서 작업을 커밋한 뒤 서버와 동기화하여 버전을 공유합니다.예시:세 명의 개발자가 협업 중 브랜치 하나가 실수로 삭제된 경우, 다른 사람의 로컬 복제본에 해당 브랜치가 있다면 이를 다시 복원하여 작업을 이어갈 수 있습니다.Git의 기본 개념:리모트(remote) 저장소와 로컬(local) 컴퓨터 간 동기화.클라이언트는 히스토리를 포함한 전체 저장소를 복제하여 버전 관리 수행.Git 상태 및 환경Git은 두 개의 환경에서 동작합니다:Local (로컬)Remote (리모트)이 두 환경은 다음 두 명령어로 연결됩니다:push:..

CS 2024.12.27

[cs] command pattern, RDBMS, Transaction(lsolation level)

목차Command PatternRDBMSTransaction(lsolation level)오늘 디자인 패턴과 JavaScript에서 상속, 추상클래스, 메서드 오버라이딩, 제네릭 부분들을 이해하며 command Pattern이 가지는 이점에 대해서 알게 되었습니다.커맨트 패턴은 기본적으로 크게 3가지로 분류됨을 알고 있었습니다.생성 패턴구조 패턴행위 패턴생성 패턴 (Creational Patterns)생성 패턴은 객체 생성과 관련된 문제를 해결하는 패턴입니다. 객체를 생성하는 방법을 추상화하여, 객체를 직접 생성하는 코드에서 발생할 수 있는 복잡성과 의존성을 줄여줍니다. 이러한 패턴은 객체 생성 방식에 유연성을 부여하며, 객체의 생성 과정을 캡슐화합니다. 주요 패턴으로는 싱글턴 패턴, 팩토리 메서드 패턴..

CS 2024.12.23

[CS] Hash Dictionary - TypeScript

Hash DictionaryHash Dictionary는 해시 함수(Hash Function)를 활용하여 데이터를 저장하는 자료구조로, 효율적인 데이터 검색과 삽입을 가능하게 합니다. 해시함수는 특정 키(Key)에 대해 고유한 값을 생성하여 데이터를 저장하는 데 중요한 역할을 합니다. 해시 함수를 통해 키를 해싱한 후, 해당 값을 버킷(Bucket) 인덱스에 저장하고, 이를 Dictionary처럼 사용할 수 있게 됩니다. Hash Dictionary는 크게 세 가지 요소로 구성됩니다: Keys, Buckets, Entries입니다.Keys는 해시 함수의 입력 값으로 사용되며, 이 값을 통해 고유한 해시 값이 계산됩니다.Buckets는 해시 함수에 의해 계산된 해시 값이 저장되는 공간입니다. 보통 배열 형..

CS 2024.12.20

[CS] TypeScript를 이해하기 위한 JavaScript 고찰(양방향 리스트를 이용하여 Stack, Queue를 Typescript로 구현하기)

목차JS Undefined 고찰표현식과 문의 대하여심벌 테이블(JS에서의 컴파일러, 인터프리터의 키로 바인딩 된 값의 메모리 주소, 데이터 타입, 스코프 관리의 용이한 자료구조)Garbage Collection : mark and sweep (자료구조 수업 중 remove의 범위를 메모리 상으로 생각하여 GC를 이용한 프로그래밍이 가능한 것인지에 대해)DoublyLinkedList 구현체stack (제네릭 클래스 형태의 Stack을 DoublyLinkedList를 이용하여 구현)Queue (Stack과 마찬가지로 DoublyLinkedList를 이용하여 구현)피드백(method 반환값의 대한 처리 중 undefined, throw 등 타입가드 및 유니온 타입의 처리의 대한 고찰)Hash Function ..

CS 2024.12.19

[CS] Typescript를 활용한 자료구조 중 Array, LinkedList

목차1. Array 중 IndexOf, LastIndexOf 구현.2. LinkedList 구현 중 SinglyLinkedList, DoublyLinkedList하면서 모르는 점Jest를 사용하는 방법 정리Bable를 사용하는 방법 정리JS, TS의 TDD 방식throw를 이용한 디버깅 방식제네릭Interaction protocol(반복자 프로토콜)Iteralble protocol(순회 가능 프로토콜)1. Jest를 사용하는 방법Jest는 JavaScript 및 TypeScript를 위한 테스팅 프레임워크로, 유닛 테스트와 통합 테스트를 쉽게 작성하고 실행할 수 있습니다.2. Babel을 사용하는 방법Babel은 최신 JavaScript 및 TypeScript 코드를 구형 브라우저에서도 동작 가능하도록 ..

CS/Algorithm 2024.12.19