단일 책임 원칙 (Single Responsibility Principle)1. 정의하나의 클래스는 하나의 책임만 가져야 한다는 것이 핵심2. 속성이 단일 책임 원칙을 지키지 못하는 경우: '사람' 클래스 예시public class Main{ public static void main(String[] args) { 사람 로미오 = new 사람(); 사람 줄리엣 = new 사람(); 로미오.군번 = "129301203012"; } public static class 사람 { String 군번; } }2.1 문제점사람 클래스에서는 군번이라는 속성이 모든 사람, 즉 남자와 여자 모두에게 적용됨하지만 이 경우 남자와 여자의 책임이 명확하게 구분되어 있지 않기 때문에 문제가 생깁니다.2.2 해결 방안남자와 여자 ..
정의소프트웨어 엔티티는 확장에 열려있어야하고변경에 대해서는 닫혀 있어야 한다.새로운 기능을 추가하거나 코드를 수정하는 경우기존 코드에 최소한의 변경을 주는 것을 목표로 해야한다.예시마티즈, 쏘나타라는 두 종류의 자동차 존재마티즈수동 기어수동 창문쏘나타자동 기어자동 창문OOP 세계에서는 자동차 종류마다 기능을 변경하지 않고도 활용가능// 마티즈를 운전할 때 driver.operateGearManual(); driver.openWindowManual(); // 쏘나타를 운전할 때 driver.operateGearAuto(); driver.openWindowAuto();가 아니라// 어떤 차를 운전하든 간에 driver.operateGear(); driver.openWindow();가 되어야 확장에 유리함.원..
현재 버전Java 1.8Spring Boot 2.4.5자바 1.8의 특징펼치기람다표현식의 등장자바 8 에서 등장한 기능입니다.개요이름이 없는 함수쓰레드 , 컬렉션을 다룰 때 매우 유용함문법기본 문법은 ( 매개변수 ) -> { 실행 코드 } 로 구성되어 있습니다.예를들어a + b 의 기능을 하는 함수의 경우(a, b) -> { return a + b; }람다 표현식 내부의 변수는 final 혹은 사실상의 final 이여야 합니다.함수형 인터페이스에서의 사용개요함수형 인터페이스단 하나의 추상 메서드를 가진 인터페이스를 의미합니다.@FunctionalInterface public interface MyFunctionalInterface { int add(int a, int b); }이러한 식으로 @Functi..
정의this 는 자바와 같은 객체지향 프로그래밍 언어에서 사용되는 키워드임객체가 자기 자신을 참조하는 경우 사용일상생활에서 나 라고 말하는 것과 유사함.코드예제package This; class 펭귄 { int var = 10; void test() { int var = 20; System.out.println(var); System.out.println(this.var); } } public class Driver { public static void main(String[] args) { 펭귄 뽀로로 = new 펭귄(); 뽀로로.test(); } }System.out.println(var); 의 경우 var는 지역변수 var 의 값이 출력됨System.out.println(this.var);의 경우 ..
정의super 는 자바 같은 단일 상속을 지원하는 객체지향 언어에서 사용되는 키워드임.해당 키워드는 바로 상위 클래스의 인스턴스를 지칭함.this 가 객체 자신을 지칭한다면, super 는 부모 클래스 를 지칭한다.코드 예제package Super; class 동물 { void method() { System.out.println("동물"); } } class 조류 extends 동물 { void method() { super.method(); System.out.println("조류"); } } class 펭귄 extends 조류 { void method() { super.method(); System.out.println("펭귄"); // Syntax error on token "super", Ide..
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; /** * packageName : org.example.병사배치하기 * fileName : Main * author : ipeac * date : 2023-08-31 * description : * =========================================================== * DATE AUTHOR NOTE * ----------..