java 69

실습) 객체 지향 프로그래밍 원칙을 활용한 주문 관리 시스템

SOLID 원칙 SRP: 단일 책임 원칙 OCP: 개방 폐쇄 원칙 LSP: 리스코프 치환 원칙 - 자식 클래스가 부모 클래스를 대체가능 ISP: 인터페이스 분리 원칙 DIP: 의존 역전 원칙 - 클래스 간의 결합을 낮추고, 추상화에 의존// SOLID 원칙을 활용한 주문 관리 시스템// SRP - Order클래스는 주문 정보를 저장하는 역할만 담당class Order { private String orderId;// 각 주문의 식별번호 private int amount; // 주문 금액 public Order(String orderId, int amount) { this.orderId = orderId; this.amount = amount; } public String getOrderId() {..

java 2025.03.06

40. 객체 지향 프로그래밍(OOP)

OOP는 Object-Oriented Programming의 약자로 객체 지향 프로그래밍이란 뜻이다 SOLID원칙객체 지향 프로그래밍의 5가지 소프트웨어 개발 원칙SRP, OCP, LSP, ISP, DIP소프트웨어 설계에서 유지보수성과 확장성을 높임다양한 디자인 패턴이 SOLID 설계 원칙에 의해 만들어짐 SOLID 원칙 적용 시 주의점원칙들은 적용 순서 X, 모두 필수 X, 서로 독립적 개념 X원칙들은 개념적 연관이 있을 뿐임 상속, 추상화, 다향성, 캡슐화 등은 OOP의 4가지 특징 SRP: Single REsponsibility Principle(단일 책임 원칙)클래스는 단 하나의 책임만을 가져야 함한 가지 역활(기능)만을 담당 / 하나의 변화 이유만을 가져야 함하나의 클래스가 가지는 하나의 역할과..

java 2025.03.06

실습) 재고 관리 시스템 만들기

Inventory Management System 다양한 상품을 관리하는 재고 관리 시스템   프로젝트 구조 Main 파일: 프로그램 실행의 진입점 entity 폴더(데이터 모델 정의): 데이터(상품)를 표현하는 클래스 정의 - 객체의 속성과 동작을 포함 service 폴더(비즈니스 로직 처리): 상품 추가, 조회, 수정, 삭제와 같은 비즈니스로직을 처리(직접적인 데이터 조작) repository 폴더(데이터 저장소 역할): 데이터를 저장하고 검색하는 기능을 제공하는 클래스 정의   요구사항 기능: 상품 추가, 수정, 삭제, 카테고리 상품 검색, 가격 또는 이름 등으로 정렬   사용 컬렉션 프레임워크 Set: 상품관리(중복 상품 방지) Map: 카테고리별 상품 분류(키: 카테고리명, 값: 상품 목록) 추..

java 2025.03.06

실습) 도서 관리 시스템

CRUD를 활용한 도서 관리 시스템 만들어보기 1.// 시스템의 제품이 가져야 할 기본 속성과 메소드abstract class Item { private final String id; private final String name; //Setter 역할 생성자 public Item(String id, String name) { this.id = id; this.name = name; } //Getter public String getId() { return id; } public String getName() { return name; } public abstract void display(); // 추상 메소드 } 2.public class Book extends Item{ // id, n..

java 2025.03.06

39. 컬렉션 프레임워크-Map

Map 인터페이스키(Key)와 값(value)의 쌍으로 요소를 저장하는 데이터 구조키는 고유한 데이터를 가짐(중복 불허용)동일한 키에 다른 값을 전달하면 기존 값이 새 값으로 덮어씌워짐서로 다른 키에 동일한 값이 들어갈 수 있음키의 '유일성'과 값의 '중복성'을 보장함순서는 보장하지 않음(LinkedHashMap은 예외)>>키값을 기반으로 빠른 검색이 가능 Map 인터페이스 종류( 구현체 )HashMap가장 많이 사용됨키와 값에 null 허용빠른 검색과 삽입 성능을 제공함순서 유지가 안됨 TreeMap키에 따른 자동 정렬 보장키에 null값을 허용하지 않음 사용 예시)public static void main(String[] args) { // Map 인터페이스 메소드 // Map키 인스턴스명..

java 2025.03.06

38. 컬렉션 프레임워크-Set

Set 인터페이스중복 허용 불가, 순서 없음, null 데이터 포함 가능중복된 요소를 포함하지 않는 객체의 집합임객체간에 저장 순서를 기억하지 않음(저장과정이 랜덤은 아님.저장하는 규칙은 있음) cf ) List 인터페이스: 중복 허용, 순서 있음, null포함 가능 Set 컬렉션 종류(구현체) HashSet가장 많이 사용되는 Set 구현체빠른 데이터 접근, 삽입을 지원함정렬이나 순서 보장을 하지 않음 LinkedHashSetHashSet에 순서 기능을 넣은 것(확장 형태)중복은 허용하지 않으나 순서는 있음 TreeSet데이터가 자동으로 정렬됨중복 제거와 정렬된 순서의 유지가 필요한 경우 사용중복은 허용하지 않지만 순서는 유지됨 Set 컬렉션 예시)public static void main(String[..

java 2025.03.06

실습) 리스트 활용

이벤트 관리 시스템 이벤트 참가자 명단, 대기열 관리를 위한 시스템 참가자는 사전 등록된 명단을 통해 이벤트에 참가 명단이 가득 찰 경우 대기열로 추가, 참가자가 떠나면 대기열의 다음 사람이 추가 이벤트 참가자 명단 관리: 사전 등록, 이벤트 당일 추가 참가자 등록 X ArrayList 목록 추가O, 삭제X, 참가자 조회 O 대기열 관리 이벤트의 한정된 좌석, 좌석이 모두 차면 추가 참가자는 대기열에 등록 LinkedList 목록 추가O, 삭제 O, 참가자 조회 Xclass EventManagement { // 필드 ArrayList participantList = new ArrayList(); LinkedList waitingQueue = new LinkedList(); // 메소드 void addP..

java 2025.03.06

37. 컬렉션 프레임워크-List

리스트 인터페이스순서가 유지되고 중복된 값을 저장 가능저장된 순서에 따라 데이터를 관리하는 다양한 메소드를 정의함 List의 특징인덱스를 통해 정확한 위치 지정중복 가능다양한 구현체를 통해 사용 가능 List의 종류 ArrayList내부에서 배열을 사용한 요소 저장빠른 읽기 성능/ 느린 삽입, 삭제 성능빠른 조회 기능에 적합, 삽입과 삭제 시 데이터 이동이 필요하여 상대적 성능 저하가 있음 LinkedList내부에서 이중 연결 리스트를 사용한 요소 저장빠른 삽입, 삭제 성능/ 느린 읽기 성능연결 기반 데이터 관리: 비순차적 데이터 작업에 적합, 특정 요소 접근시 순차 탐색이 필요해 성능이 저하됨 리스트 인터페이스 예시)public static void main(String[] args) { // L..

java 2025.03.06

36. 컬렉션 프레임워크

프레임워크(frame + work)제공받은 일정한 요소와 틀,규약을 가지고 무언가를 만드는 일 컬렉션 프레임워크데이터를 저장하고 처리하는 자료구조의 표준화된 설계다양한 자료 구조를 제공, 데이터를 효율적으로 관리하는 것을 지원한다 컬렉션 프레임워크의 주요 '인터페이스'와 특성 Collection 자바 컬렉션 프레임워크의 최상위 인터페이스(하위에 List, Set 등이 있음)데이터의 집합을 다룸 List데이터의 순서가 유지됨(Index 번호)데이터의 중복이 가능함>> ArrayList, LinkedList, Vector 등등 Set데이터의 순서가 유지되지 않음(몇몇 구현체는 예외)데이터의 중복이 불가능>> HashSet, TreeSet*, LinkedHashSet*등등(*이 붙은 구현체는 정렬/순서가 제공..

java 2025.03.06

실습) 생일까지 남은 일수를 계산하는 프로그램

import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.time.temporal.ChronoUnit;import java.util.Scanner;public class Practice { public static void main(String[] args) { // 생일까지 남은 일수를 계산하는 프로그램 // 사용자로부터 생년월일을 입력받고, 다가오는 생일까지 남은 일수를 반환 Scanner sc = new Scanner(System.in); // 사용자로부터 생년월일 입력받기(형식 YYYY-MM-DD) System.out.println("생년월일을 입력하세요 (형식 YYYY-MM-DD)"); St..

java 2025.03.05