CS 14

(CS) 의존성 주입

의존성 주입정의 : 객체 간의 의존 관계를 외부에서 주입하는 설계 패턴 원칙상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다.두 모듈은 모두 추상화에 의존해야 한다추상화는 세부사항에 의존하지 않아야 한다.장점모듈화와 재사용성객체 간의 결합도를 낮추어 모듈화가 쉬워지고, 코드의 재사용성을 높일 수 있다테스트 용이성의존성을 외부에서 주입받기 때문에, 테스트시 Mock 객체를 쉽게 주입할 수 있다.유지보수성객체 간의 직접적인 결합이 줄어들어, 변경 사항이 다른 객체에 미치는 영향을 최소화 할 수 있다.코드 가독성의존성을 명시적으로 주입하므로 코드의 의도를 파악하기 쉽다확장성객체를 쉽게 교체하거나 확장할 수 있기 때문에, 유연한 시스템 설계가 가능하다. 단점초기 설정 복잡성Spring과 같은 DI 컨..

CS/기타 2025.01.09

(CS) 자료구조(1) - 기본 자료구조

해당 글은 아래의 자료구조가 정리되어 있습니다.배열, 리스트, 링크드 리스트, 스택, 큐, 덱, 우선순위 큐 배열(Array), 리스트(ArrayList), 링크드 리스트(LinkedList)  배열(Array)정의동일한 데이터 타입의 요소들이 연속적으로 메모리에 저장된 자료구조특징인덱스를 사용해서 요소에 직접 접근 하여 시간복잡도가 O(1)크기가 고정적메모리 할당시, 연속된 공간이 필요해서, 크기가 크면 메모리 부족 문제 발생 가능장점인덱스를 통하기 때문에 데이터 접근이 빠름메모리 구조가 간단함단점크기 변경 불가삽입 / 삭제 시 데이터 이동이 필요하기 때문에, 시간 복잡도가 O(n)으로 효율이 낮음실생활 예시대학 시간표: 주어진 요일과 시간에 따라 고정된 형식으로 저장정적 데이터를 처리하는 시스템: 예..

CS/자료구조 2025.01.07

(CS) SOLID 원칙

급하신 분들은 마지막에 요약해놨으니, 그부분만 보셔도 무관합니다! 들어가기에 앞서...♤ 객체 지향 프로그래밍?정의절차적 프로그래밍 : 반복될 가능성이 있는 것들을 재사용이 가능한 함수로 만들어 사용하는 방식OOP : 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생한 방법객체 내부에 자료형(field)와 함수(method)가 같이 존재함.중요한 4가지 특징추상화필요로 하는 속성이나 행동을 추출하는 작업세부적인 사물들의 공통적인 특징을 파악 후, 하나의 집합으로 만들어 내는것. (아우디, 벤츠는 모두 “자동차” → 자동차 라는 추상화 집합을 만듬!. 여기서 공통 특징을 만드는 것!!)캡슐화낮은 결합도를 유지할 수 있도록 설계하는 것한 곳에서 변화가 일어나도, 다른 곳에 미치는 영향을 최소화시..

CS/기타 2025.01.07

(CS) 디자인 패턴 - 싱글톤 패턴

디자인 패턴프로그램 설계시 발생했던 문제들을 하나의 "규약"으로 만들어 놓은 것의 집합체.♤ 들어가기전, 언어에 대해서!클래스정의 : 객체 지향 프로그래밍에서 데이터를 정의하고, 메서드(동작)을 묶어서 하나의 설계도를 만든 것특징객체를 생성하기 위한 틀 역할.필드(속성)와 메서드(동작)로 구성.예를 들어, Car라는 클래스는 자동차의 속성(브랜드, 색상), 동작(운전, 정지)등 을 정의할 수 있습니다.public class Car { String brand; String color; public void drive() { System.out.println("Driving..."); }} 인스턴스 정의 : 클래스를 기반으로 메모리에 생성된 실제 객체특징클래스는 설계도이면,..

CS/디자인 패턴 2025.01.07