본문 바로가기

프로그래밍 기초

아키텍처 기초 개념 요약 정리

※ 틀린 부분이 있을 수 있으며, 피드백은 언제나 환영합니다.

서술형(답이 비어 있는 버전) 링크

https://docs.google.com/document/d/1Gpvb-RsX4nvBEkVW8FEGruh053kMD7uRD1CKdGfQCv4/edit?usp=sharing


프로그래밍 패러다임

객체 지향 프로그래밍(Object-Oriented Programming)

ㄴ 정의: 데이터(프로퍼티)와 행동(메소드)을 결합하여 객체를 다루는 SW 디자인을 조직하는 프로그래밍 패러다임.

ㄴ 핵심 특징:

캡슐화(Encapsulation):
ㄴ 의미: 프로퍼티와 메소드를 한데 묶고, 접근을 제어한다. 
ㄴ 이점: 보안을 강화하고, 버그를 줄이며, 유지보수성을 향상한다.

상속(Inheritance): 
ㄴ 의미: 새로운 클래스가 기존 클래스로부터 파생되는 것을 허용한다.
ㄴ 이점: 코드 재사용을 촉진하고 깔끔한 계층을 확립한다.

다형성(Polymorphism): 
ㄴ 의미: 다른 타입의 객체가 공통 인터페이스를 통해 다뤄지는 것을 허용한다.
ㄴ 이점: 유연하고, 확장성이 있으며, 디커플링된 코드를 만들어낸다.

추상화(Abstraction): 
ㄴ 의미: 복잡한 세부 사항을 숨기고, 오직 핵심만 노출한다.
ㄴ 이점: 설계와 사용을 단순화한다.


절차 지향 프로그래밍(Procedural Programming)

ㄴ 정의: 프로시저 호출 개념에 기반한 프로그래밍 패러다임.

함수형 프로그래밍(Functional Programming)

ㄴ 정의: 컴퓨팅을 수학적 함수의 평가로 다루고 상태와 가변 데이터를 바꾸는 것을 회피하는 프로그래밍 패러다임.

패러다임 간 차이점:

ㄴ 절차 지향 vs OOP: 절차 지향 프로그래밍은 데이터에서 동작이 일어나는 절차에 초점을 맞추는 반면에, OOP는 데이터와 행동을 객체 안으로 결합한다.
ㄴ 함수형 vs OOP: 함수형 프로그래밍은 불변성과 순수한 함수를 우선시하지만, OOP는 가변 상태를 허용하며 객체를 강조한다.


OOP 세부 사항

객체 지향

ㄴ 의미: 

 

SOLID 원칙

ㄴ OOP 간 관계: SOLID는 OOP라는 큰 틀에서 코드를 잘 작성하기 위한 "구체적인 가이드라인" 역할을 한다.
ㄴ 구성 원칙: 

단일 책임 원칙(Single Responsibility Principle, SRP):
ㄴ 클래스는 단 한 개의 책임을 가져야 한다.
ㄴ 클래스를 변경하는 이유는 단 하나여야 한다.

개방 폐쇄 원칙(Open-Closed Principle, OCP):
ㄴ 코드는 확장에는 열려 있고 변경에는 닫혀 있어야 한다.
ㄴ 즉, 기존의 코드를 변경하지 않고도 기능을 추가할 수 있어야 한다.

리스코프 치환 원칙(Liskov Substitution Principle, LSP)
ㄴ 하위 타입 객체는 상위 타입에서 가능한 행위를 수행할 수 있어야 한다.
ㄴ 즉, 상속 관계에서는 꼭 IS-A 관계가 성립해야 한다.

인터페이스 분리 원칙(Interface Segregation Principle, ISP)
ㄴ 클라이언트(클래스나 모듈)는 자신이 사용하는 메소드에만 의존해야 한다.
ㄴ 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다.

의존관계 역전 원칙(Dependency Inversion Principle, DIP)
ㄴ 의존 관계를 맺을 때, 변하기 쉬운 구체적인 것보다는 변하기 어려운 추상적인 것에 의존해야 한다.
ㄴ 즉, 구체화된 클래스보다는 추상 클래스 또는 인터페이스에 의존해야 한다.

'프로그래밍 기초' 카테고리의 다른 글

Java 기초 개념 요약 정리(2)  (0) 2026.02.05
JVM 기초 개념 요약 정리  (1) 2025.12.08
Java 기초 개념 요약 정리(1)  (0) 2025.12.08