자바 35

2022.03.16 복습 뱀 게임

오늘은 지난 시간 공부했던 내용들을 복습 삼아 뱀 주사위 게임을 만들어보았습니다 뱀 주사위 게임 설계 복습 삼아 만드는 것이기에 간단하게 진행하신다고 하시네요 (간단 너무 좋아 😘) 설계도는 그렸으니 만들어야 할 것들을 정리해보겠습니다 Class Player , Class Tile 가 먼저 필요할 것 같습니다 이 2가지를 먼저 설계하는 이유는 이 두 가지는 리턴 타입이 될 수 있고 파라미터가 될 수 있고 자료구조가 될 수 있기 때문에 먼저 설계해야 합니다 그 후 Interface PlayerService를 만들고 그 안에는 getNextPlyer 가있고 return 타입으로는 Plyer를 가질 것 같습니다 Interface TileService는 getTile(idx) 를가질것 같습니다 이렇게 설계 순서..

2022.03.15 퀴즈 만들기

퀴즈의 설계는 이런 식으로 해보려고 합니다 헌데 강사님이 말씀하신 것이 부모를 먼저 만드는 것이 아닌 자식을 먼저 만들고 그리고 거기서 중복적으로 사용되는 것들을 부모로 올려서 부모를 만들라고 하셔서 그렇게 진행 보겠습니다 우선 가장 먼저 ox퀴즈를 만들어보았습니다 만들어보니 중복되는 코드가 퀴즈 문제 , 퀴즈 정답 그리고 사용자의 대답 그리고 각 퀴즈를 설명해줄 수 있는 공간 등이 중복적으로 필요하다는 걸 알았습니다 그래서 그친구들을 부모 클래스로 옮겨서 만들었습니다 부모 Class Quiz @Setter public abstract class Quiz { //퀴즈 문제 하위에서도 봐야하기에 protected protected String title; //퀴즈 정답 하위에서도 봐야하기에 protecte..

2022.03.15 Interpace

Interpace 강사님의 Interpace 설명이 참 인상적이었습니다 바로 식당에 비유하셔서 설명해주셨습니다 Interpace 가 다 final , public 인 이유는 바로 손님이 주문할때는 짜장면 1개 짬뽕하나 주세요~ 하지만 웨이터가 주방장 한테는 짜 하나 ~ 짬 하나 ~ 이런식으로 말하는 경우가있습니다 이경우는 주방장과 웨이터간에 짜 는 짜장 짬은 짬뽕이라는 약속이 되어있기때문에 가능한 일입니다 양쪽이 정보를 다 알아야하기에 public 그리고 정보가 변하면 안되기에 final 참 쉽죠? Interpace 의미 위 그림에서 Interpace 의 의미를 찾아볼수있다 이런 상황이 생길수있습니다 주방장이 아파서 다른 주방장이 온겁니다 그런데 웨이터는 그걸 모르고있죠 하지만 문제될것은 없습니다 웨이터..

2022.03.15 데이터 위주의 상속

오늘은 수업의 시작은 지난 수업의 상속에 관한 이야기로 시작했습니다 바로 상속에 관한 코딩의 팁을 주셨습니다 보통 코딩을 하다 보면 타입을 써야 하는 경우가 많습니다 예를 들면 파라미터 , 리턴 타입 , 자료구조 등이 있죠 그럴 때 타입을 자식이 아닌 부모 타입으로 가지는 것이 좀 더 유연하다 부모의 타입으로 사용해라 라는 팁을 주셨습니다 ⭐ 타입을 만들 때는 자식 말고 부모 타입으로!! 데이터 위주의 상속 데이터 위주의 상속을 할 때는 이런 식으로 기존 데이터에서 추가적인 데이터가 필요할 때 사용해줍니다 그리고 데이터 위주의 상속을 설계하고 코딩할 때의 주의점은 바로 부모를 먼저 만드는 것!입니다 코딩을 할 때는 부모를 먼저 만드는 것이 아닌 자식을 먼저 만들고 자식 데이터들에서 중복되는 것들을 뽑아서..

2022.03.14 상속을 이용해서 UI 만들어보기

오늘 배운 로직 위주의 상속을 이용해서 UI를 만들었습니다 설계 가장 먼저 부모인 BasicUI를 만들어주었습니다 BasicUI public class BasicUI { private Scanner scanner; //Scanner 생성자 public BasicUI(Scanner scanner) { this.scanner = scanner; } //메시지 출력하는 기능 public void print(String msg){ System.out.println(msg); } //String 타입 입력받기 public String input(String msg){ System.out.println(msg); return scanner.nextLine(); } //int 타입 입력받기 public int inp..

눈 속임 Override

ui에서 input를 찾으면 아래 그림처럼 내부적으로 돌아가게 됩니다 이러면 어떻게 할 건데..? 이런 경우도 있을 수 있습니다 바로 SampleUI에 BasicUI에 input 하고 똑같은 input가 있다면??? 그럼 실행하는 입장에서는 BasicUI까지 올라갈 필요 없이 SampleUI에 있는 input를 보게 될 것입니다 이런 걸 바로 Override라고 합니다 Override 컴파일할 때는 부모 타입에 있는 메서드를 바라보고 있는데 실제로 실행을 할 때는 실핼될때 객체에 있는 메서드가 실행되는 것을 말합니다 마치 눈속임 같지요?? ✨Override는 상속과 인터페이스 관계에서만 성립합니다!! 그럼 왜 Override를 할까요?? 바로 상황에 따라서 다르게 동작해야 하는 부분을 Override로 ..

JAVA 2022.03.14

상속 심화

상속의 예제를 보면서 상속을 좀 더 이해해보려고 합니다 public class BasicUI { private Scanner scanner; //Scanner 생성자 public BasicUI(Scanner scanner) { this.scanner = scanner; } //String 타입 입력받기 public String input(String msg){ System.out.println(msg); return scanner.nextLine(); } //int 타입 입력받기 public int inputInt(String msg){ String inputStr = input(msg); return Integer.parseInt(input(msg)); } } BasicUI Class에서는 Scanne..

JAVA 2022.03.14

상속이란?

상속이란? 부모 Class와 자식 Calss 가있으며 자식 Class 가 부모 클래스를 선택해서 그 부모의 내용을 물려받아서 가지고 오는 것 자식 클래스는 기본적으로 부모의 모든 메서드 + (자신의 고유 기능) 따라가 자식 클래스는 부모 클래스보다 기능이 더 많은 경우가 많습니다 상속의 기준 판단하기 보통 JAVA상속을 검색하면 이런 이미지가 나온다 이 이미지가 의미하는 뜻은 알겠지만 단순하게 이 구조가 상속이다!라고 생각하면 안 된다 그 이유는 위 구조는 로직의 구조이다 로직의 구조로서 저 데이터를 보면 상속의 대상이지만 만약 저걸 데이터로써 본다면 어떨까??? 데이터로써 보면 이런 구조일 것이다 이것은 클래스 하나에 여러 개의 인스턴스일 뿐이다 즉 상속의 대상으로 보기 어렵다 그렇다면 상속을 어떤 기..

JAVA 2022.03.14

ArrayList

기존배열 private VoterVO [] arr; public VoterDAO(){ arr= new VoterVO [4]; arr[0] = new VoterVO(1, "홍길동"); arr[1] = new VoterVO(2, "고길동"); arr[2] = new VoterVO(3, "박길동"); arr[3] = new VoterVO(4, "이길동"); } 기존 배열 방식 각 배열에 내용을 지정해주어야 하고 처음 설정했던 크기만큼만 사용할 수 있음 ArrayList 길이의 제한이없다 int의 크기만큼 만들어진다 ArrayList 선언 , 초기화 ArrayList 선언 타입 이름 private ArrayList voArrayList; //ArrayList 선언 타입 이름 private ArrayList vo..

JAVA 2022.03.13

2022.03.13 UI & Main

저는 개인적으로 UI 쪽이 먼가 가장 복잡하게 느껴졌습니다 이번 투표 시스템뿐 아니라 다른 로직을 만들 때도 항상 UI 쪽에서 멍~해졌던 것 같습니다 이번 투표 시스템을 만들 때도 UI를 만들 때 정말.... 많아진 Class 때문에 어디에 머가 있었지.... 이게 무슨 기능이었지... 하면서 머리가 뒤죽박죽이 되어버렸습니다.... 사용자야 UI 들어간다 @RequiredArgsConstructor public class VoteUI { @NonNull private VoteService voteService; @NonNull private VoterService voterService; @NonNull private CandidateService candidateService; @NonNull priv..