java 42

MVC

안녕하세요. 이번시간에는 MVC라는 패턴에 대해 알아볼까 해요. MVC 패턴이란? 사용자가 인터페이스를 설계하는 소프트웨어 디자인 패턴 중 하나로 Model(모델), View(뷰), Controller(컨트롤러) 구성요소를 가지고 있어요. 세 가지의 구성 요소의 역할분담으로 개발 진행하는데 하나하나 알아가 볼까요? Model Model(모델)은 데이터와 비즈니스 로직을 담당하고 있어요. 데이터베이스와 연동, 데이터 처리 등을 수행하고, 상태 변경에 대한 View와 Controller에게 알릴 수 있는 메커니즘을 제공하고 있습니다. View와 Controller의 세부 구현사항으로 독립적으로 실행 단 직접 UI를 다루지 않는 점이 특징이에요. View View(뷰)는 사용자에게 데이터를 표시..

Backend/Java 2025.07.15

OOP-SOLID 원칙

안녕하세요 이번에는 객체 지향 프로그래밍(OOP)에서 유지보수성과 확장성이 좋은 코드를 작성하기 위한 5가지의 원칙 SOLID원칙에 대해 알아볼게요. SOLID는 5가지의 원칙 SRP, OCP, LSP, ISP, DIP의 앞자리를 따서 만든 이름이랍니다. 여기서 5가지의 원칙에 대해 알아보고 잘못된 예시와 올바른 예시로 비교도 해볼게요. 1. SRP(Single Responsibility Principle) 첫 번째 SRP는 단일 책임 원칙 즉 "클래스는 단 하나의 책임만을 가져야 한다"입니다. 클래스 당 한 가지 역할(기능)만 담당 / 하나의 변화 이유만을 가져야 하고, 하나의 클래스가 가지는 하나의 역할과 관련된 변경사항만 클래스에 영향을 미쳐야 한다는 원칙을 가집니다. 간단한 예시를 한번 볼..

Backend/Java 2025.07.14

예외 처리(Exception Handling) try, catch, finally

안녕하세요. 이번에는 예외 처리(Exception Handling)를 위해 꼭 필요한 기본 문법try, catch, finally에 대해 알아볼게요! 하나 하나의 차이점이 아닌 전부 다 사용하기 때문에 사용법을 간단하게 알아볼게요! 1. try 블록 try는 예외가 발생할 수 있는 코드를 넣습니다. 그리고 예외가 발생을 한다면 곧바로 catch로 넘기는 친구에요 2. catch 블록 catch는 try블록에서 발생하는 특정 예외를 잡아 처리하는 곳이에요. catch는 여러 개를 사용해 다양한 예외별로 다르게 처리할 수도 있답니다! 3. finally 블록 finally는 앞에 두 친구랑 다르게 예외 발생 여부와 상관없이 무조건 실행되는 코드에요. try - catch 없이 바로 try - finall..

Backend/Java 2025.07.12

this vs super vs final

안녕하세요. 이번에는 super와 this, final의 차이점을 확인해볼 건데요. 자주 사용하는 키워드인 만큼 역할과 쓰임새가 확실히 다르기 때문에 이번시간으로 비교를 해보면서 하나씩 배워볼까요? this this는 뜻 그대로 내가 지금 사용하는 객체 자신을 가리키는 친구예요. 같은 클래스 안에 필드와 지역 변수 이름이 같을 때 구분하거나, 현재 객체를 참조할 때 사용해요. class Person { String name; Person(String name) { this.name = name; // 필드와 매개변수 구분용 } void print() { System.out.println(this.name); } Person() { ..

Backend/Java 2025.07.12

상속과 구현(extends VS implements)

안녕하세요. 이번에는 상속과 구현(extends vs implements)의 차이점을 알아볼 거예요. 제가 첫 상속이라는 공부를 할 때 왜 이걸 쓰는지 잘 몰랐어요. 생각보다 간단하니 가볍게 차이점을 알아볼게요. 상속(extends) 상속은 클래스가 클래스를 상속할 때 인터페이스가 다른 인터페이스 상속할 때 사용한답니다. 이 뜻은 같은 친구들끼리 상속할 때만 사용할 수 있는 친구예요. class Animal { void breathe() { System.out.println("숨 쉬어요"); }}class Dog extends Animal { void bark() { System.out.println("멍멍"); }}Dog dog = new Dog();d..

Backend/Java 2025.07.12

인터페이스와 추상화 클래스(interface VS abstract class)

안녕하세요. 오늘은 인터페이스와 추상화 클래스의 차이점을 알아볼 거예요. 이 친구들을 알아보기 전 공통점은 미완성된 설계도 역할이라는 점인데요. 역할을 같지만 사용하는 방식이 달라서 같이 알아볼까요? 인터페이스(interface) 인터페이스는 간단하게 "계약서" 같은 친구예요. 행동의 형태(메서드 이름, 매개 변수)만 정해놓고, 실제 어떻게 할지는 나중에 각각 다르게 구현 가능하게 해 주는데요. 그리고 여러 개를 동시에 구현할 수 있답니다.// 1. 인터페이스 정의public interface Animal { void makeSound(); // 몸체 없는 메서드}// 2. 인터페이스 구현(implements) 클래스public class Dog implements Animal { @O..

Backend/Java 2025.07.12

스태틱과 인스턴스의 차이점( static VS instance)

안녕하세요. 이번에는 자바의 중요한 개념 중 하나인스태틱(static)과 인스턴스(instance)의 차이점을 알아볼 거예요. 처음에는 혼란이 올 수 있지만, 조금씩 익숙해지면 객체지향 프로그래밍이 훨씬 명확해지니 천천히 하나씩 알아볼게요! statc 스태틱은 클래스가 메모리에 올라갈 때 한 번만 생성되는 친구예요. 객체 없이도 사용 가능하고, 모든 객체가 같은 값을 공유해 줘요.public class MathTool { public static int count = 0; // static 변수 public static void increase() { // static 메서드 count++; }}// 사용MathTool.increase();MathTool.increase(..

Backend/Java 2025.07.12

접근제한자(Access Modifiers)

안녕하세요. 이번에는 접근제한자에 대해 알아볼 건데요! 접근 제한자(Access Modifiers) 클래스, 메서드, 필드 등에 대한 접근 권한을 제어하는 데 사용(약속)하는 친구예요! 코딩의 시작 첫 파일을 실행 중 화면을 보시면 public class Hello { public static void main(String[] args) { }}대부분 이렇게 코딩을 시작하게 됩니다. 그중 앞에 public이 바로 접근제어자입니다. public을 사용한 이유는 시작점을 자바가 찾을 수 있게 일부러 public으로 열어두는 거예요! 이제부터 왜 접근제어자 중 시작이 왜 public인지 그리고 종류가 몇 가지가 있는지 함께 보시죠! public 첫 번째 코드는 public입니다. 이 친구..

Backend/Java 2025.07.12

업캐스팅과 다운캐스팅

안녕하세요. 오늘은 업캐스팅과 다운캐스팅의 설명과 차이점을 공유하고 싶어서 작성하게 됬어요 첫 업캐스팅과 다운캐스팅을 교육을 받을 때 머리가 조금 아팠던 기억이 납니다. (물론 지금도 지끈지끈합니다) class Animal { void sound() { System.out.println("동물들은 각 다른 소리를 냅니다."); }}class Dog extends Animal { void sound() { System.out.println("강아지는 왈왈!"); } void fetch() { System.out.println("강아지는 공을 가져옵니다."); }}예시 코드를 들고 왔는데요. 코드를 보면서 하나하나 같이 알아보는 시간을 가..

Backend/Java 2025.07.11

오버라이딩과 오버로딩

안녕하세요. 오늘은 제가 Java를 공부하면서 처음으로 혼란스럽게 한 두 친구를 소개하고자 해요. 바로 오버라이딩과 오버로딩입니다. 이름이 비슷해서 볼 때마다 새롭고 혼란스러웠는데요. 사실 이 두 친구는 전혀 다른 내용을 가지고 있답니다. 같이 차이점을 알아볼까요? 오버라이딩 오버라이딩은 상속받은 메서드를 제정의 하는 친구입니다. 예시)class Animal { void sound() { System.out.println("동물이 소리를 낸다"); }}class Dog extends Animal { @Override void sound() { System.out.println("멍멍!"); }}지금 예시는 클래스 Animal 은 보호자, 클래스 Do..

Backend/Java 2025.07.08