loading
본문 바로가기 메뉴 바로가기
SRP - 단일 책임 원칙 (Single Responsibility Principle)

1. 단일 책임 원칙(SRP)란?"클래스는 단 하나의 책임만 가져야 한다."여기서 말하는 '책임'이란 변경의 이유(Reason to Change)이다.즉, 클래스는 오직 하나의 변경 이유만 가져야 한다는 것이 핵심이다.2. SRP가 필요한 이유 📌 SRP가 지켜지지 않으면?하나의 클래스가 너무 많은 역할을 담당 -> 높은 결합도한 기능이 바뀌면, 관련 없는 기능도 영향을 받음유지보수가 어렵고, 테스트도 어려워짐📌 SRP가 지켜지면?클래스가 하나의 역할만 담당 -> 낮은 결합도, 높은 응집도변경이 국소화되어 예측 가능테스트 단위가 작아지고 명확함❌ 3. SRP 위반 예제public class ReportManager { public void generateReport() { // 1...

IT/SOLID 2025. 4. 21. 19:22
추상화(Abstraction) - 복잡함을 감추고 본질만 드러내는 설계의 미학

1. 추상화란?추상화(Abstraction)는 불필요한 구현 세부사항은 감추고, 핵심적인 개념이나 행위만을 정의하여 표현하는 객체지향 설계 원칙이다.즉, "무엇을 할 수 있는가"에 집중하고, "어떻게 구현할 것인가"는 감춘다는 철학 📌Java에서의 예시List 인터페이스만 알아도 ArrayList나 LinkedList의 구체 구현을 몰라도 사용 할 수 있음이처럼 추상화를 통해 사용과 구현을 분리하고, 유연한 설계를 할 수 있다. 📌 예시로 이해하기"TV 리모컨"은 전원을 켜고 채널을 바꿀 수 있음 (기능 = 추상화된 인터페이스)내부적으로 무슨 회로로 동작하는지는 알 필요 없음 (구현 = 캡슐화)public interface RemoteControl { void powerOn(); void ..

IT/OOP 2025. 4. 16. 21:31
🌀다형성(Polymorphism) - 한 인터페이스, 여러 구현의 힘

1. 다형성이란?다형성(Polymorphism)은 하나의 인터페이스(또는 부모 타입)를 통해 다양한 구현(자식 클래스)의 동작을 수행할 수 있는 객체지향의 핵심 원칙이다. 간단히 말하면 : "같은 메시지를 보냈을 때, 객체가 각자 다른 방식으로 응답하는 능력" 2. 왜 다형성이 중요한가? 📌 유지보수성과 확장성 향상새로운 기능 추가 시 기존 코드 수정 없이 확장 가능 (OCP 원칙 실현)고수준 모듈이 저수준 구현이 아닌 인터페잇에 의존하게 된다 (DIP 원칙 실현)다양한 객체를 하나의 타입으로 다룰 수 있음📌 의존성 분리 (Decoupling)클라이언트 코드는 인터페이스만 알고 구체 구현은 모름 -> 유연한 설계 가능📌 테스트 용이성인터페이스 덕분에 Mock 객체를 쉽게 주입하여 단위 테스트가 가능..

IT/OOP 2025. 4. 15. 18:48
상속(Inheritance) - 코드 재사용의 유혹, 그러나 신중해야 할 이유

1. 상속이란?상속(Inheritance)은 기존 클래스의 속성과 동작(메서드)을 자식 클래스가 물려받아 사용하는 객체지향의 핵심 기능이다.즉, 부모 클래스의 기능을 확장하거나 재사용하기 위해 자식 클래스가 상속을 받는 것이다.public class Animal { public void sound() { Systme.out.println("동물이 소리를 냅니다."); }}public class Dog extends Animal { @Override public void sound() { System.out.println("멍멍!"); }} 2. 상속의 목적목적설명코드 재사용중복 제거, 공통 로직 분리계층적 관계 표현일반 -> 구체 구조 표현(is-a 관계)확장성 ..

IT/OOP 2025. 4. 15. 15:10
🔒 캡슐화(Encapsulation) - 객체지향의 시작점, 복잡성의 종착역

1. 캡슐화란?"캡슐화(Encapsulation)는 객체의 내부 구현을 숨기고, 외부에서는 정해진 방법(인터페이스)으로만 접근하게 하는 원칙"이다.즉, "데이터 + 행위"를 하나의 단위로 묶고, 외부에서 그 데이터에 직접 접근하지 못하도록 막는 것이 핵심이다.2. 왜 캡슐화가 중요한가? 🎯 복잡성 감춤 (Information Hiding)내부 로직이 바뀌어도 외부 인터페이스는 그대로 -> 변경에 강한 구조사용자는 "무엇을 한다"만 알고 "어떻게"는 몰라도 됨을 의미 🎯 무결성 보장객체 상태를 외부에서 직접 조작하지 못하게 하여 비정상 상태 방지 🎯 테스트/디버깅/유지보수 용이코드가 어디에서 어떻게 바뀌는지 예측 가능3. 접근 제어자와 캡슐화: 캡슐화는 대부분 접근 제어자(Access Modifie..

IT/OOP 2025. 4. 14. 20:27
Java의 메모리 구조와 GC 완전 정복

1. Java 프로그램 실행 과정 다시 짚고 가기 .java -> 컴파일 -> .class (바이트코드 생성) JVM이 Class Loader로 로딩 메모리 영역(Runtime Data Area)에 적재 실행 엔진(Execution Engine)이 해석 & 실행실행 중 발생하는 객체/변수 등이 JVM 메모리 영역에 저장됨즉, 우리가 작성한 모든 Java 코드는 결국 JVM 메모리 공간을 점유하게 되며, 메모리 구조의 이해 = 성능과 안전성 이해의 첫걸음2. JVM의 메모리 영역 정리 (Java 8 기준) 📌 JVM Runtime Data Area 구성 영역설명생성 시점스레드 공유 여부Heap객체 인스턴스 저장, GC의 대상클래스 로딩 시 ✅ 공유Method Area (-> MetaSpace)클래스 정보..

IT/Java 2025. 4. 14. 20:03
이전 1 ··· 13 14 15 16 17 18 19 ··· 23 다음
이전 다음

소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 때부자

티스토리툴바

운영자 : 아벡이
제작 : 아로스
Copyrights © 2022 All Rights Reserved by (주)아백.

※ 해당 웹사이트는 정보 전달을 목적으로 운영하고 있으며, 금융 상품 판매 및 중개의 목적이 아닌 정보만 전달합니다. 또한, 어떠한 지적재산권 또한 침해하지 않고 있음을 명시합니다. 조회, 신청 및 다운로드와 같은 편의 서비스에 관한 내용은 관련 처리기관 홈페이지를 참고하시기 바랍니다.