Post

⚡ Java - 왜 자바인가

⚡ Java - 왜 자바인가

Java의 가장 큰 특징은 ‘어디서든 실행되고, 알아서 관리해준다’는 것

  • JVM과 플랫폼 독립성: “Write Once, Run Anywhere.” 자바는 소스코드를 기계어가 아닌 ‘바이트 코드’로 바꾸고, 이를 __JVM(Java Virtual Machine)__이 실행함. 덕분에 윈도우에서 짠 코드를 리눅스에서도 그대로 돌릴 수 있음
  • 가비지 컬렉션(GC): C 언어처럼 개발자가 직접 메모리를 해제할 필요가 없음. JVM이 알아서 안 쓰는 객체를 치워주니, 메모리 누수(Memory Leak) 걱정을 덜고 비즈니스 로직에 집중할 수 있음
  • 강한 타입 체크와 안정성: 컴파일 단계에서 타입을 깐깐하게 검사하므로, 실행 중에 발생할 ‘말도 안 되는 에러’를 미리 방지

객체 지향(OOP) 4대 개념: “객체답게 만들기”

OOP는 세상을 ‘객체(물건/개념)’들의 상호작용으로 바라보는 방식

개념한 줄 정의비유 (자동차)이유
캡슐화정보 은닉 및 보호내부 엔진 구조는 몰라도 핸들/페달로만 조작외부의 잘못된 조작으로 상태가 망가지는 걸 방지
상속코드의 재사용아반떼의 기본 기능을 물려받은 ‘아반떼 N’중복 코드를 줄이고 계층 구조를 만듦
다형성하나의 이름, 다양한 동작페달을 밟았을 때 가솔린차와 전기차의 반응이 다름코드의 유연성과 확장성 (가장 중요!)
추상화핵심만 남기기모든 차의 공통점인 ‘가다, 서다’만 설계구체적인 구현보다 큰 그림(설계)에 집중

💡 핵심 개념: “다형성 덕분에 부모 클래스 타입의 변수 하나로 여러 자식 객체를 참조할 수 있어, 코드의 변경 없이 기능을 갈아 끼우기 쉬움”

SOLID 원칙: “좋은 설계의 5가지 기준”

OOP 개념을 실제 실무에서 ‘어떻게 하면 깔끔하게 적용할까?’에 대한 해답

SRP: 단일 책임 원칙

  • 핵심: 클래스는 딱 한 가지 일만 해야 함
  • 이유: 클래스가 너무 많은 일을 하면, 기능 하나 고칠 때 상관없는 다른 기능까지 고장남
  • : 요리사 클래스는 요리만 해야지, 배달과 결제까지 하면 안 됨

OCP: 개방-폐쇄 원칙) 🌟 중요

  • 핵심: 확장에는 열려 있고, 수정에는 닫혀 있어야 함
  • 방법: 인터페이스를 활용
  • : 새로운 결제 수단(카카오페이)이 추가될 때, 기존의 결제 로직 코드를 수정하는 게 아니라 Payment 인터페이스를 상속 받는 클래스를 새로 만드는 방식임

LSP: 리스코프 치환 원칙

  • 핵심: 자식 클래스는 부모 클래스의 기능을 온전히 수행할 수 있어야 함
  • 주의: ‘타조는 새지만 날 수 없다’처럼, 부모의 기능을 못 하게 막아버리는 상속은 LSP 위반. 상속 관계를 잘못 설정했다는 신호

ISP: 인터페이스 분리 원칙

  • 핵심: 내가 안 쓰는 기능이 들어있는 거대한 인터페이스보다, 구체적인 여러 개의 인터페이스가 나음
  • : 스마트폰 인터페이스 하나에 통화, 문자, 게임, 카메라 규격을 다 넣기보다는, 통화기능, 카메라기능 인터페이스로 나누면 전화만 되는 폰을 만들 때 불필요한 카메라 로직을 구현 안 해도 됨

DIP: 의존 역전 원칙 🌟 중요

  • 핵심: 구체적인 클래스(구현체)를 직접 바라보지 말고, 추상적인 인터페이스를 바라봐야 함
  • 이유: 그래야 부품을 갈아끼우기 쉬움
  • : 운전자는 아반떼 클래스에 의존하는 게 아니라 자동차 인터페이스에 의존해야 함. 그래야 차를 소나타로 바꿔도 운전자는 운전하는 법을 다시 배울 필요가 없음.

🚀 핵심 요약

  1. Java라는 도구는 JVMGC를 통해 우리를 편하게 해줌
  2. 그 도구로 OOP(캡슐화, 상속, 다형성, 추상화)를 구현하여 유연한 프로그램을 만듦
  3. 하지만 무분별한 객체 지향은 코드를 복잡하게 만드니, SOLID 원칙을 지켜서 유지 보수가 쉬운 설계를 완성해야 함
This post is licensed under CC BY 4.0 by the author.