Adventure Time - Finn 3
본문 바로가기

분류 전체보기242

MVC - 자판기 프로그램 (var.2) 추가 기능 메뉴검색 기능 이름검색 여러개가 나올 수 있기 때문에 selectAll ProductDTO를 인자로 넘길때 searchConditon = "이름검색" 검색하고 싶은 이름은 매개변수 name을 이용 재고있는것만 여러개가 나올 수 있기 때문에 selectAll ProductDTO를 인자로 넘길때 searchConditon = "품절제외" [관]메뉴가격변경 변경이기 때문에 update를 사용 ProductDTO를 인자로 넘길때 searchConditon = "가격변경" 검색하고 싶은 가격은 매개변수 price을 사용 client package client; import ctrl.Ctrl; public class Client { public static void main(String[] args) {.. 2023. 12. 14.
자바 프로그래밍의 기본 1. 자바 소개 자바는 전 세계에서 가장 많이 사용하는 프로그래밍 언어 중 하나로 게임, 웹서버 ,안드로이드 앱 애플리케이션 등 다양한 프로그램을 개발하는데 사용되고 있다 2. 자바의 특징 객체 자향언어 객체 지향언어는 하나의 기능을 객체로 만들고 이러한 객체들을 결합해서 하나의 프로그램을 완성하는 기법을 말한다 자바는 대표적인 객체지향 언어로 상속, 캡슐화 다형성이 잘 나타난다. 단순성 C/C++을 기반으로 개발되었지마느 C/C++에서 제공하는 문법인 포인터 등 혼란을 일으키는 불필요한 기능을 제거했다 이식성 자바는 바이트코드를 생성하고 가상 머신을 이용해 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계되어있다 따라서 운영체제 종류와 상관없이 어느 환경에서나 실행할 수 있습니다 멀티.. 2023. 12. 13.
MVC - 자판기 프로그램 (var.1) LP 메뉴추가[관] 메뉴목록출력 메뉴선택 메뉴재고변경[관] 메뉴삭제[관] ------------------- 메뉴검색 메뉴 가격 변경[관] ------------------- 장바구니 Client package client; import ctrl.Ctrl; public class Client { public static void main(String[] args) { Ctrl app=new Ctrl(); app.start(); } } Ctrl package ctrl; import java.util.ArrayList; import model.ProductDAO; import model.ProductDTO; import view.View; public class Ctrl { private ProductDAO.. 2023. 12. 13.
MVC var.3 2023.12.13 추가 웹 개발에서는 기본생성자를 사용하는 것을 원칙으로 한다!! : new 할때 생성자의 인자로 넣는 값중에서 어떤 값이 정말 유효한 값인지 파악하는 시간을 줄이기위함 모델 : 응집도를 높이기 위해 같은메서드에 만든다 client public class Client { public static void main(String[] args) { StudentCtrl app=new StudentCtrl();//설치 app.startApp();//실행 } } model package model; public class StudentDTO { private int num; // PK private String name; private int score; private String searchC.. 2023. 12. 12.
IndexOutOfBoundsException 원인 : 인덱스가 음수이거나 배열 크기보다 크거나 같은 경우 발생할 수 있습니다. 수정하는 방법 사용자 입력 유효성 검사 : 사용자 입력으로 인해 예외가 발생한 경우 입력의 유효성을 검사하여 배열의 유효한 인덱스 범위 내에 있는지 확인 배열 크기에 따라 for 루프 사용 : 반복 횟수가 고정된 기존 for 루프를 사용하는 대신 크기에 따라 배열을 반복하는 for 루프를 사용할 수 있음 try-catch 블록 사용 : 입력을 검증할 수 없거나 루프를 변경할 수 없는 경우 try-catch 블록을 사용하여 예외를 포착하고 코드에서 처리할 수 있음 2023. 12. 12.
널포인터 익셉션 NPE 널포인터 익셉션 NPE:"주어"가 없어서 발생하는이슈 메서드 수행 주체 ex) 널 studentDTO.getSearchCondition().equals("점수검색") studentDTO. 없거나 -> ctrl 에서 책임지고 new 해주기때문에 100%로 문제가아님 studentDTO.getSearchCondition(). 가 없는 상황! 1) get SearchCondition 할때 널이 되지 않도록 값을 준다 2) if 순서 변경 2023. 12. 12.
MVC - var.2 , var.3 모델에서 R: 데이터 반환이 목표 update에서 var.1 처럼 하면 이름변경시 점수입력 받는 인자를 이름(String)으로 오버로딩하여 해결할 수 밖에 없다 하지만 오버로딩으로 해결하면 기능변경시 실수가 자주 발생하기때문에 현업에서 사용되지 않는 방법이다 메서드를 오버로딩하여 여러개를 작성하면 "응집도가 낮아짐" 유지보수에 불리한 코드 ver 1은 결합도가 높은 코드 :코드에 변경사항이 발생했을떼 ,함께 바꿔야하는 코드가 많은 경우를 의미함 좋은 코드란? 외워 - 유지보수가 용이한 코드 2023. 12. 12.
개발 패턴 : MVC var.1 mvc패턴을 사용 하지 않을 때 팀플할때 코드가 Test.java 파일 1개 1) 다른 사람이 코드 작성중일때 - 실행 불가능 2) 다른 사람과의 동시간 형상(버전)관리가 불편함 프로그램 코딩을 M V C Model 데이터와 관련된 작업을 처리하는 부분 "나는 항상 정확한 값을 받았다" CRUD 구현 View 사용자와 관련된 작업을 처리하는 부분 "세상에 정상적인 사용자는 없다." 사용자의 모든 입력 값에 대해서 검사 == 유효성 검사 사용자에게 친절한 프로그램이 될수있도록 고민하는 역할 ==사용자 편의성 == UI/UX Controller M-V이어주는 역할 M과 V는 절대로 직접 결합되어서는 안됨! 절대 안됨!! Controller를 통해서만 결합될 수 있습니다!! 하나의 프로그램에서 Model,Vi.. 2023. 12. 11.
예외처리 예외란? 예외,에러,오류,이슈,문제,컴플레인,... 프로그램을 비정상적으로 종료되게하는 문제들 =>사용자가 원할때 종료하는 것이 바람직함 Exception 예외가 발생되면 캡쳐 =>원인파악=>해결책 예외처리를 왜해야하는가? 프로그램은 절대 비정상 종료되면 안됨 1) 예외가 발생되면 무시하고 다음 스텝으로 이동 2) 예외가 발생할수 있으니까, 제대로 사용해~ 하고 안내 > 정수 정수를 입력해주세요 1~10사이로 입력해주세요! 정수입력 >> 5 5를 입력했습니다! 한글코딩 1~10사이의 정수를 입력해야합니다. 정상입력해야 종료됩니다 while try 정수입력 >> 정수 catch 정수를 입력해주세요 1~10사이로 입력해주세요! try 정수입력 >> 5 break 5를 입력했습니다! public class T.. 2023. 12. 11.
서점 - 배스트셀러 추가 package team3_1; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; class Book { private int id;// key private String publisher;// 출판사 private String writer;// 작가 private int price;// 가격 private String bookTitle;// 책제목 private String genre;// 장르 private int inventory;// 재고 public Book(int id, String publisher, String writer, int price, String bookTitle, String genre, .. 2023. 12. 10.
서점 - 배스트 셀러 미완 배스트 셀러 제외 완성 - 2023.12.10 package team3_1; import java.util.ArrayList; import java.util.Scanner; class Book { private int id;// key private String publisher;// 출판사 private String writer;// 작가 private int price;// 가격 private String bookTitle;// 책제목 private String genre;// 장르 private int inventory;// 재고 public Book(int id, String publisher, String writer, int price, String bookTitle, String genre,.. 2023. 12. 10.
서점 - Delete 책 종류 제거 public static void bookDelete(ArrayList book, ArrayList searchList, ArrayList bestSeller) { int pkValue = searchMenu(book, searchList); if (pkValue > 0) { System.out.println("폐기하시겠습니까? 1. yes 2. no"); System.out.print(">>> "); int actionDelete = numCk(1, 2); if (actionDelete == 1) { for (int i = 0; i < book.size(); i++) { if (book.get(i).getId() == pkValue) { book.remove(i); System.out.p.. 2023. 12. 10.
서점 - Update 1. 책 구매 2. 책 관리 1. 책 구매 public static int sellBook(int pkValue, ArrayList searchList) { int totalBookPrice = 0; // 구매할 책의 총 가격 Book book = null; while (true) { for (Book data : searchList) { if (data.getId() == pkValue) { System.out.println("이 책의 가격은 " + data.getPrice() + "원 입니다."); book = data; } } if (book.getInventory() 2023. 12. 10.
서점 - Create 책 등록[관리자] -박현구 main int actionAddBook; System.out.println("1. 코믹"); System.out.println("2. 소설"); System.out.println("0. 돌아가기"); System.out.print("장르를 선택해주세요 : "); actionAddBook = numCk(0, 2); if (actionAddBook == 0) {// 돌아가기 continue; } else if (actionAddBook == 1) {// 코믹 추가 book.add(addBook(PK++, "코믹")); } else if (actionAddBook == 2) { book.add(addBook(PK++, "소설")); } 함수 public static Book add.. 2023. 12. 10.
서점 - Read 1. 작가 검색 - 노승현 2. 출판사 검색 - 손성용 3. 책 제목 검색 - 박현구 4. 장르 검색 - 김진영 5.전체 검색 6. 상세 정보 1.작가 검색 - before String search = sc.next(); if (action == 1) { } else if (action == 2) { for (int i = 0; i < book.size(); i++) { if (book.get(i).getWriter().contains(search)) { System.out.println(book.toString()); } else { System.out.println("검색된 작가가 없습니다."); } } } -after System.out.print("검색하고 싶은 작가를 입력하세요 : "); Str.. 2023. 12. 10.
서점 - Class class Book { private int id;// key private String publisher;// 출판사 private String writer;// 작가 private int price;// 가격 private String bookTitle;// 책제목 private String genre;// 장르 private int inventory;// 재고 public Book(int id, String publisher, String writer, int price, String bookTitle, String genre, int inventory) { this.id = id; this.publisher = publisher; this.writer = writer; this.price = pr.. 2023. 12. 10.
서점 - UF사용자 흐름 1. 책검색 1. 작가 검색 2. 출판사 검색 3. 가격 검색 4. 장르 검색 검색된 책 출력 해당 책으로들어가서-출판사, 작가, 가격, 책제목, 장르, 재고 출력 1. 구매 2. 돌아가기 2. 장르별 배스트셀러 1.코믹 : ooo 2.소설 : ooo 해당 책으로들어가서-출판사, 작가, 가격, 책제목, 장르, 재고 출력 1. 구매 2. 돌아가기 3. 구매하기 장바구니 목록 출력 1.구매하기 2. 초기화 0. 프로그램 종료 991001. 관리자 모드 1. 책 등록 1. 코믹 2. 소설 2. 총매출 총매출 출력 3. 책관리 검색 책선택 1.재고 변경 2.가격 변경 5. 책 폐기 1.전체출력 2.검색 책선택 삭제하시겠습니까? 6. 배스트셀러 추출 1.랜덤으로 뽑기 2.직접뽑기 랜덤으로 뽑기시 1. 코믹 2. .. 2023. 12. 10.
서점 - LP 로직 프로세스 프로그램명 : 서점 C : 추가 ==관리자== 책 등록 ==손님== 책 구매 R : 책 이름 검색 검색 책이름검색 작가검색 출판사검색 전체 검색 ⇒ 손님 총 매출 ⇒ 관리자 U : 책 재고 증가 ⇒ 관리자 책 가격 변경 ⇒ 관리자 D : 책 종류 제거⇒ 관리자 2023. 12. 10.
Random 에러 random 범위는 양수여야 한다는 내용입니다. 2023. 12. 10.
private JAVA의 모든 멤버변수는 private으로 보호해야함 외부에서의 직접 접근을 막아야함 "캡슐화(정보은닉)" 접근제어자 private키워드를 작성 감춰진 멤버변수의 값을 받아오는 메서드 getter() 감춰진 멤버변수에게 값을 부여하는 메서드 setter() 그럼 똑같은거 아닌가? ㄴㄴ 매개변수에 직접 접근해서 변경하면 로그가 안 남지만 메서드 사용시 로그를 남김 2023. 12. 7.
컬렉션 프레임 워크- 배열리스트(향상된 배열) 컬렉션 프레임워크 배열같은 자료형(자료구조)들을 제공하는 라이브러리 JAVA에서 기본 제공해줌 [배열리스트], 링크리스트, 집합, [맵], 트리, ... 배열리스트 - 향상된 배열 ArrayList datas=new ArrayList(); 서로 관련된 데이터들을 저장할수있는 자료형 같은 자료형 아니어도 가능 [12, 13, 11, 10, hello] 저장할 개수 x =>하지만 서로 다른 자료형들을 같은 (메모리) 에 저장하는게 맞나?? =>같은 자료형 저장을 "강제"해야겠어! "제네릭" ArrayList datas=new ArrayList(); 정수만 저장 가능하다! [12, 13, 11, 10] 문자열만 저장 결론)배열리스트는 반드시 제네릭과 함께 사용해야한다 많이 사용하는 배열리스트 메서드 datas.. 2023. 12. 7.
TV 만들기 -인터페이스 SamsungTV String userName; // 사용자명 int channel; // 현재 채널 위치 void channelUp(); // channel++; void channelDown(); // channel--; void channelRandom(); // 1~999로 채널 랜덤 변경됨(현재 위치 제외) void printInfo(); // ㅁㅁ님의 현재 시청 채널은 ㅇㅇ입니다. SamsungMiniTV int battery; void channelRandom(); // 1~999로 채널 랜덤 변경됨(현재 위치 제외) 단, 배터리 10씩 소모 0이하가 되면 채널 랜덤 변경 불가능 LgTV boolean power; int channel; void channelUp(); // ON 상태일때 :.. 2023. 12. 7.
프로그래밍 기초 코드의 기본 틀 1. 코드 가독성 2. 성능 : 코드 깊이, scope,변수의 개수,... 3. 모듈화 코드를 작성하는 순서 1. 설계 : 어떤 기능이 있는 프로그램을 만들기에 대한 프로그램 CRUD 2. 데이터 명세 : 속성(멤버변수) 정의 ERD 3. 한글코딩 4. 코딩 5. 유효성 검사 6. 모듈화 고려사항 연산자 우선순위 디버깅표 제어문 : 조건문 / 반복문(while,for) 배열 : 최대값 찾기 알고리즘 (로직) 서로 관련된 데이터 자료형이 같은 데이터 저장할 테이터의 개수를 정확히 알고 있어야함 함수 : 메서드 시그니쳐(input, output,기능) JAVA객체지향 프로그래밍 OOP 클래스 Class JAVA에 기본 단위 클래스 객체 =new 생성자(); : 객체화 인스턴스화 객체들끼리는 .. 2023. 12. 6.
추상 클래스 & 인터페이스 추상클래스가 어떻게 등장했는가??? 기존에 이미 많은 자식 클래스들이 있었는데, 이들의 부모클래스가 없어서 부모 클래스를 정의하기위해 탄생 추상클래스 -> 객체를 정의하는데에는 관심 xxx 객체 생성이 불가능 ex1)[추상] 포켓몬 - [추상] 전기 ,물 - 피카츄,꼬부기 ex2)[추상] 챔피언 -티모,아리,아무무,.. ex3)[추상] 모양-원,네모,세모,별,... ex4)[추상] 동물-강아지,고양이,... ex5)사람-학생,직원 ->상위 중에 추상이 아닐 수도 있다 ->클래스를 정의하는데에 관심이 있음!! main에서 Shape s=new Shape("모양"); 추상클래스로는 객체화 불가능!!! 추상클래스를 사용하는 이유 1. 객체화를 막기위함 2. 추상메서드를 사용하기 위함 ->메서드 오버라이딩 강제.. 2023. 12. 6.
연예인 정보 저장 코딩 모듈화,유효성 package test; import java.time.LocalDate; import java.util.Random; import java.util.Scanner; class Celebrity { String name; int birthYear; String agency; int hight; String type; Celebrity(String name, int birthYear, String agency, int hight, String type) { this.name = name; this.birthYear = birthYear; this.agency = agency; this.hight = hight; this.type = type; } void printInfo() { int now = Loca.. 2023. 12. 5.
연예인 정보 저장 코딩 모듈화 x, 유효성 x package test; import java.time.LocalDate; import java.util.Random; import java.util.Scanner; class Celebrity { String name; int birthYear; String agency; int hight; String type; Celebrity(String name, int birthYear, String agency, int hight, String type) { this.name = name; this.birthYear = birthYear; this.agency = agency; this.hight = hight; this.type = type; } void printInfo() { int now = Loca.. 2023. 12. 5.
연예인 정보 저장 한글 코딩 // =====저장 프로그램===== // 1. 연예인 추가 // 2. 조회 // 3. 시상 // 4. 종료 // 1번 선택시 // 1. 가수 // 2. 배우 // 3. 예능인 // 1번 선택시 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 // 2.아니오 // 무소속 // 2번 선택시 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 // 2.아니오 // 무소속 // 명대사를 입력하세요 // 3번 선택시 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 // 2.아니오 /.. 2023. 12. 5.
연예인 정보 저장 설명 및 동작 순서 // 연예인을 저장하고 시상식을 진행 할 수 있는 프로그램을 만들어주세요. // =====저장 프로그램===== // 1. 연예인 추가 // 2. 조회 // 3. 시상 // 4. 종료 // 1번 선택 시 // 1.가수 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 // 2.아니오 // 무소속 // 2.배우 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 // 2.아니오 // 무소속 // 명대사를 입력하세요 // 3.예능인 // 이름을 입력하세요 // 출생년도를 입력하세요 // 키를 입력하세요 // 소속사가 있습니까? // 1.예 // 소속사 입력 .. 2023. 12. 5.
[PCCE 기출문제] 5번 / 산책 문제 설명 여름이는 강아지를 산책시키려고 합니다. 여름이는 2차원 좌표평면에서 동/서/남/북 방향으로 1m 단위로 이동하면서 강아지를 산책시킵니다. 산책루트가 담긴 문자열 route가 주어질 때, 도착점의 위치를 return하도록 빈칸을 채워 solution함수를 완성해 주세요. route는 "N", "S", "E", "W"로 이루어져 있습니다. "N"은 북쪽으로 1만큼 움직입니다. "S"는 남쪽으로 1만큼 움직입니다. 북쪽으로 -1만큼 움직인 것과 같습니다. "E"는 동쪽으로 1만큼 움직입니다. "W"는 서쪽으로 1만큼 움직입니다. 동쪽으로 -1만큼 움직인 것과 같습니다. 출발점으로부터 [동쪽으로 떨어진 거리, 북쪽으로 떨어진 거리]형태로 강아지의 최종 위치를 구해서 return해야 합니다. 출발점을 .. 2023. 12. 5.
[PCCE 기출문제] 4번 / 저축 문제 설명 진우는 돈을 모으기 위해 저축을 하려고 합니다. 목표로 하는 금액은 100만 원이며, 첫 달에 일정 금액을 넣은 뒤 70만 원까지는 매월 조금씩 저축하다가 70만 원 이후부터는 월 저축량을 늘려 빠르게 목표 금액을 달성하고자 합니다. 첫 달에 저축하는 금액을 나타내는 정수 start, 두 번째 달 부터 70만 원 이상 모일 때까지 매월 저축하는 금액을 나타내는 정수 before, 100만 원 이상 모일 때 까지 매월 저축하는 금액을 나타내는 정수 after가 주어질 때, 100만 원 이상을 모을 때까지 걸리는 개월 수를 출력하도록 빈칸을 채워 코드를 완성해 주세요. 제한사항 0 ≤ start ≤ 99 1 ≤ before ≤ after ≤ 25 입출력 예 입력 #1 28 6 8 출력 #1 12 .. 2023. 12. 5.