반응형
👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇
클래스
feat. 내가 정의한 자료형
클래스는 객체가 아니다.
설계도 같은 느낌으로 생각하면 된다.
클래스를 정의하여 만들고. new 를 사용하여 정의된 클래스를 사용할 수 있도록 만든 것이 객체이다.
클래스의 첫 글자는 대문자로 작성해야한다.
- 이유 : 원시타입이 아닌 참조 타입임으로 대문자로 시작하는 것
- 참조 타입 특징 : 같은 객체의 주소를 공유한다. 주소로 접근하는 특징이 있다
원시타입 : call by value. 값을 참조
참조타입 : call by reference. 주소를 참조
가비지컬렉터 Gc : 더이상 참조할 객체가 없는 경우 메모리에서 삭제를 한다. Heap영역만 삭제하고 Stack은 FIFO 구조로 삭제된다
특징
실제 접근이 가능해야한다. 실제 사용 가능한 존재여야 한다.
Heap메모리에 올라와 참조 가능한 상태여야 한다.
객체를 정의 할 때엔 "대상"이 필요하다.
어떤 대상을 클래스를 추상화(정의)하고 이것을 사용 가능하도록 Heap에 할당시키는 것을 객체라고 한다
문제
[과제]
조별과제 : 조별로 2팀을 나눈다.
제출방법 : 소스를 파워포인트에 첨부하여 교사용컴퓨터에 올린다.
기간 : 오늘 종료시간 까지
단어장을 만들어 주세요
단어는 영문단어랑 한글단어를 같이 입력합니다.
레벨을 지정하는데 1부터3까지 지정할 수 있습니다.
단어는 최대 10개까지 저장할 수 있습니다.
단어 입력, 수정, 삭제, 검색, 전체보기 기능을 구현해 주세요
검색은 완전일치할 경우만 가능하게 해 주시고
기능을 업그레이드 해서 일부분만 일치해도 찾아 낼 수 있도록 해 주세요
좋은 기능도 추가해 주시면 감솨 감솨
1.클래스 정의하기
2.메서드 정의하기
3.구현하기
> 오늘 포인트
> 클래스는 일상생활의 대상을 추상화한다. 변수와 메서드로
> 클래스로 정의 한 것을 메모리에 할당하는 것은 객체, 인스턴스라고 한다.
나의 과제 풀이
package wordNote;
public class Main {
public static void main(String[] args) {
new Note();
}
}
package wordNote;
import java.util.Scanner;
// 영단어 Note 프로그램
public class Note {
Scanner in = new Scanner(System.in);
Words[] wordsNote = new Words[30];
Functions fnc = new Functions();
Note() {
boolean flag = true;
while (flag) {
// 단어장 프로그램 소개
info();
System.out.println("\n=====================================");
System.out.print(" 메뉴 선택 >> ");
int user = in.nextInt();
in.nextLine();
switch (user) {
case 1: // 1번 입력
addWord();
break;
case 2: // 2번 수정
editWord();
break;
case 3: // 3번 삭제
delWord();
break;
case 4: // 4번 검색
searchWord();
break;
case 5: // 5번 전체보기
viewWord();
break;
case 6: // 종료
flag = false;
break;
default:
System.out.println("다시 입력 해 주세요");
}
}
}
// info 5번 전체보기 메서드
private void viewWord() {
System.out.println("입력된 영단어 노트 전체 내용 입니다");
for (int i = 0; i < wordsNote.length; i++) {
if (wordsNote[i] != null && wordsNote[i].krWord != null) {
wordsNote[i].prt();
}
}
}
// info 4번 검색 메서드
private void searchWord() {
System.out.println("검색할 내용을 선택 해 주세요");
fnc.loopFnc(wordsNote);
}
// info 3번 삭제 메서드
private void delWord() {
System.out.println("삭제할 단어의 분류를 선택하세요");
Words w = fnc.pickFun(wordsNote);
for (int i = 0; i < wordsNote.length; i++) {
if (wordsNote[i] != null ) {
if (w.equals(wordsNote[i])) {
wordsNote[i].prt();
System.out.println(" >> [ " + wordsNote[i].krWord + " ] 삭제 완료 ");
wordsNote[i] = new Words();
w = null;
break;
}
}
}
}
// info 2번 수정 메서드
private void editWord() {
System.out.println("단어를 수정하겠습니다 . 수정할 단어를 찾겠습니다");
// pickFun 메서드는 수정을 원하는 단어를 찾아 해당 Words 객체를 반환하는 메서드입니다 . // 반환값의 주소(wordsNote[인덱스번호])를 w변수에 값 복사를 하여 대입
Words w = fnc.pickFun(wordsNote);
System.out.println("[ "+ w.krWord + " ]수정할 내용를 선택하세요");
System.out.println("1. Level\t2. 한글 단어\t3. 영어 단어");
System.out.print(" 메뉴 번호 입력 >> ");
int user = in.nextInt();
in.nextLine();
switch (user) {
case 1:
System.out.print("수정될 Level 입력 >> ");
int level = in.nextInt();
in.nextLine();
w.stage = level;
System.out.println("\t\t[ 변경 후 ]");
w.prt();
w = null;
break;
case 2:
System.out.print("수정될 한글 단어 입력 >> ");
String editKor = in.nextLine();
w.krWord = editKor;
System.out.println("\t\t[ 변경 후 ]");
w.prt();
w = null;
break;
case 3:
System.out.print("수정될 영어 단어 입력 >> ");
String editEng = in.nextLine();
w.engWord = editEng;
System.out.println("\t\t[ 변경 후 ]");
w.prt();
w = null;
break;
default:
System.out.println("입력된 번호는 확인할 수 없는 범위입니다.");
}
}
// info 1번 입력 메서드
private void addWord() {
// 단어 입력
Words w = new Words();
System.out.println("lv 1 : 쉬운단어");
System.out.println("lv 2 : 국가 및 지역명");
System.out.println("lv 3 : 동사");
System.out.print(" 레벨 입력 >> ");
int level = in.nextInt();
in.nextLine();
w.stage = level;
System.out.print("영어 단어 입력 >> ");
String eng = in.nextLine();
w.engWord = eng;
System.out.print("한글 단어 입력 >> ");
String kor = in.nextLine();
w.krWord = kor;
for (int i = 0; i < wordsNote.length; i++) {
if (wordsNote[i] == null && fnc.duplicateString(wordsNote, w.engWord)) {
wordsNote[i] = w;
w = null;
break;
} else if (!(fnc.duplicateString(wordsNote, w.engWord))) {
System.out.println("영단어가 중복되었거나 잘못된 등록 방식입니다 다시 시도해주세요");
break;
}
}
}
private void info() {
System.out.println("\n=====================================");
System.out.println("단어장 프로그램");
System.out.println("1. 단어 입력\t2. 단어 수정\t3. 단어 삭제\t4. 단어 검색\t5. 전체 보기\t6. 노트 종료");
}
}
package wordNote;
public class Words {
int stage = 0;
String krWord = null;
String engWord = null;
public void prt(){
System.out.println("=======================");
System.out.println(" LEVEL >> [ Lv " + stage + " ]");
System.out.println(" KOREA >> " + krWord);
System.out.println(" ENGLISH >> " + engWord);
}
}
package wordNote;
import java.util.Scanner;
public class Functions {
Scanner in = new Scanner(System.in);
// 원하는 단어를 찾아서 출력해주는 메서드
public void loopFnc(Words[] str) {
System.out.println(" 1 : Level , 2 : 한글 단어, 3 : 영어 단어 ");
System.out.print(" 메뉴 번호 입력 >> ");
int choice = in.nextInt();
in.nextLine();
switch (choice) {
case 1:
System.out.println("원하는 Level을 입력하세요");
System.out.print(" 레벨 입력 >> ");
int level = in.nextInt();
in.nextLine();
for (int i = 0; i < str.length; i++) {
if (str[i] != null) {
if (str[i].stage == level) str[i].prt();
}
}
break;
case 2:
System.out.println("원하는 한글 단어를 입력하세요");
System.out.print(" 한글 단어 입력 >> ");
// 입력시 여백 발생이 있다면 여백 삭제
String korTmp = in.nextLine().replaceAll("\\s", "");
for (int i = 0; i < str.length; i++) {
if (str[i] != null) {
// 입력시 여백 발생이 있다면 여백 삭제
if (str[i].krWord.replaceAll("\\s", "").equals(korTmp)) str[i].prt();
}
}
break;
case 3:
System.out.println("원하 영어 단어를 입력하세요");
System.out.print(" 영어 단어 입력 >> ");
// 입력시 여백 발생이 있다면 여백 삭제
String eng = in.nextLine().toLowerCase().replaceAll("\\s", "");
for (int i = 0; i < str.length; i++) {
if (str[i] != null) {
// 입력시 여백 발생이 있다면 여백 삭제
if (str[i].engWord.toLowerCase().replaceAll("\\s","").equals(eng)) str[i].prt();
}
}
break;
default:
System.out.println("해당 번호의 메뉴가 없습니다");
}
}
// 원하는 단어를 찾기위해 WordsNote 배열을 매개변수로 입력받아
// 원하는 단어를 찾아 해당 배열의 주소값을 리턴해줌
public Words pickFun(Words[] str){
System.out.println(" 1 : 한글 단어, 2 : 영어 단어 ");
System.out.print(" 메뉴 번호 입력 >> ");
int choice = in.nextInt();
in.nextLine();
switch (choice) {
case 1:
System.out.println("한글 단어를 입력하세요");
System.out.print(" 단어 입력 >> ");
// 입력시 여백 발생이 있다면 여백 삭제
String kor = in.nextLine().replaceAll("\\s", "");
for (int i = 0; i < str.length; i++) {
if (str[i] != null) {
// 입력시 여백 발생이 있다면 여백 삭제
if (str[i].krWord.replaceAll("\\s", "").equals(kor)) return str[i];
}
}
break;
case 2:
System.out.println("원하는 영어 단어를 입력하세요");
System.out.print(" 단어 입력 >> ");
// 입력시 여백 발생이 있다면 여백 삭제
String eng = in.nextLine().toLowerCase().replaceAll("\\s", "");
System.out.println(eng);
for (int i = 0; i < str.length; i++) {
if (str[i] != null) {
// 입력시 여백 발생이 있다면 여백 삭제
if (str[i].engWord.toLowerCase().replaceAll("\\s", "").equals(eng)) {
System.out.println(str[i]);
return str[i];
}
}
}
break;
default:
System.out.println("해당 번호의 메뉴가 없습니다");
return null;
}
return null;
}
// 중복 단어 체크 기능
// 중복 단어가 있는지 여부 확인 후 boolean값 반환
public boolean duplicateString (Words[] words , String wordsEng){
String engTmp = null;
for (int i = 0; i < words.length; i++) {
for (int j = 0; j < words.length; j++) {
if (words[i] != null) {
// 입력시 여백 발생이 있다면 여백 삭제
engTmp = wordsEng.toLowerCase().replaceAll("\\s", "");
if (engTmp.equals(words[i].engWord.toLowerCase().replaceAll("\\s", ""))) {
return false;
}
}
}
}
return true;
}
}
반응형
'👩🏻💻 𝐋𝐚𝐧𝐠𝐮𝐚𝐠𝐞 > ⠀⠀⠀⠀ Jᴀᴠᴀ' 카테고리의 다른 글
2023/10/25 😍 클래스 실습 과제2 (0) | 2023.10.31 |
---|---|
2023/10/24 😍 클래스 실습 과제 (1) | 2023.10.31 |
2023/10/20 ⭐️ 조별미션 - 즐겨봐요 게임의숲 (1) | 2023.10.20 |
2023/10/19💌 조별 미션 / 영단어 깨기 (1) | 2023.10.19 |
2023/10/18👋 클래스/메소드/생성자/변수 (1) | 2023.10.18 |