재밌고 어려운 IT를 이해해보자~!
상속을 이용한 CRU 설계 및 제작 본문
CRUD 설계
—-부모클래스
—멤버변수
생물
에너지
이름
—메서드
void 정보출력 ( )
—-자식클래스
—멤버변수*
식물 사람
에너지->1~50 에너지 -> 1~100
이름 이름
잎사귀개수 나이
—메서드
void 광합성 ( ) void 음식먹기 ( )
void 1년 후 ( )
Create 생물 등록 ->식물
->사람
Read 전체검색
사람검색
Update 광합성 ( ) -> 식물 에너지 현재부터 50까지필요한 만큼 증가
음식먹기 ( ) -> 사람에너지 1~30랜덤증가
1년후 ( ) 나이 1 증가
한글코딩
한글코딩
class LivingThings {
LivingThings(){
int 에너지
String 이름
}
printInfo() {
(이생물의 에너지 : ~ 이름 : ~)
}
}
class Plant extends LivingThigns {
super(int 에너지, String 이름)
this.잎사귀개수 = 잎사귀개수
}
void photosynthesis () {
int 에너지 = 50 - 현재에너지
this에너지 += 에너지;
@Override
printInfo() {
(이식물의 에너지 : ~ 이름 : ~ 잎사귀 개수 : ~)
}
}
class Person extends LivingThings {
Person(int 에너지, String 이름) {
this(int 에너지, Stirng 이름, -1)
}
Person(int 에너지, String 이름, int 나이) {
super(int 에너지, String 이름)
this.나이 = 나이
}
void meal () {
this.에너지 += 랜덤(1~30)증가
}
void yearLater () {
this.나이 += 1증가
}
@Override
printInfo() {
(이사람의 에너지 : ~ 이름 : ~ 나이 : ~)
}
}
실제코딩
import java.util.Random;
import java.util.Scanner;
class LivingThings {
int energy;
String name;
LivingThings(int energy) {
this.energy = energy;
}
LivingThings(int energy, String name) {
this.energy = energy;
this.name = name;
}
void printInfo() {
System.out.println("이생물의 에너지 :" + this.energy + " 이름 :" + this.name);
}
}
class Plant extends LivingThings {
int leaves;
Plant(int energy, String name, int leaves) {
super(energy, name);
this.leaves = leaves;
}
void photosynthesis() {
int energy = 50 - this.energy;
this.energy += energy;
}
@Override
void printInfo() {
System.out.println("이식물의 에너지 : " + this.energy + " 이름 : " + this.name + " 잎사귀 개수 : " + this.leaves);
}
}
class Person extends LivingThings {
int age;
Person(int energy, String name) {
this(energy, name, -1);
}
Person(int energy, String name, int age) {
super(energy, name);
this.age = age;
}
void meal() {
Random rand = new Random();
this.energy += rand.nextInt(30) + 1;
if (this.energy > 100) {
this.energy = 100;
}
}
void yearLater() {
this.age++;
}
@Override
void printInfo() {
System.out.println("이사람의 에너지 : " + this.energy + " 이름 : " + this.name + " 나이 : " + this.age);
}
}
public class teamasgmt {
public static void main(String[] args) {
LivingThings[] LT = new LivingThings[6];
while (true) {
System.out.println("1. 생물등록 2.사람만보기 3. 전체보기 및 광합성, 1년후, 음식먹기 4.종료");
Scanner scan = new Scanner(System.in);
int ans = scan.nextInt();
if (ans == 1) {
System.out.println("1. 식물등록 2. 사람등록");
ans = scan.nextInt();
if (ans == 1) {
LT[0] = new Plant(5, "진달래", 20);
LT[1] = new Plant(2, "무궁화", 10);
LT[2] = new Plant(20, "해바라기", 5);
System.out.println("식물 등록완료!");
} else {
LT[3] = new Person(50, "석진", 31);
LT[4] = new Person(80, "아지", 28);
LT[5] = new Person(20, "철수", 20);
System.out.println("사람 등록완료!");
}
} else if (ans == 2) {
for (int i = 0; i < LT.length; i++) {
if (LT[i] instanceof Person) {
LT[i].printInfo();
}
}
} else if (ans == 3) {
for (int i = 0; i < LT.length; i++) {
if (LT[i] instanceof Person) {
Person per = (Person) LT[i];
per.meal();
per.yearLater();
per.printInfo();
} else {
Plant plan = (Plant) LT[i];
plan.photosynthesis();
plan.printInfo();
}
}
} else {
System.out.println("프로그램 종료");
break;
}
System.out.println();
}
}
}
'코리아IT핀테크과정' 카테고리의 다른 글
컬렉션 프레임워크 (Collection Framework) (2) | 2023.12.07 |
---|---|
추상클래스 (abstract class), 인터페이스 (Interface) (2) | 2023.12.06 |
상속(Inheritance) (2) | 2023.12.01 |
this 예약어, 로그출력, 클래스와 배열의 활용 (0) | 2023.12.01 |
클래스(Class), 메서드(Method), 생성자(Constructor) (0) | 2023.11.30 |
Comments