복습순서 |
메모 | ||
ch06> Subject Student MainTest1 |
ch07> Hero Bank MainTest ch08> Person |
ch09> MainTest1 NumberPrinter ex1> MainTest1 Warrior Wizard |
과목 클래스 설계
package ch06;
public class Subject {
String subjectName;
int score;
int subjectId;
}
학생 클래스 설계
package ch06;
public class Student {
public int studentId;
public String studentName;
//우리가 설계한 클래스를 참조 타입으로 사용한다.
Subject korea;
private Subject math;
//생성자
public Student(int id, String name) {
studentId = id;
studentName = name;
//참조 타입은 생성을 해야 사용할 수 있다.
//메모리에 존재하게 만들어야 한다.
korea = new Subject();
math = new Subject();
}
//정보를 입력받는 메서드 생성(국어 과목에 대한 정보 세팅)
public void setKoreaSubject(String name, int score) {
korea.subjectName = name;
korea.score = score;
}
//(수학과목에 대한 정보 세팅)
public void setMathSubject(String name, int score) {
math.subjectName = name;
math.score = score;
}
//학생의 총점을 화면에 출력하는 기능 만들기
public void showStudentScore() {
int total = korea.score + math.score;
System.out.println(studentName
+ "학생의 총점은 " + total + " 입니다.");
}
}
학생 클래스 사용
package ch06;
//클래스를 사용하는 입장
public class MainTest1 {
//main function_start of code
public static void main(String[] args) {
Student studentLee = new Student(1,"Lee");
studentLee.setKoreaSubject("국어", 100);
studentLee.setMathSubject("수학", 90);
studentLee.showStudentScore();
//학생2동작 총점구하기
Student studentKim = new Student(2,"kim");
studentKim.setKoreaSubject("국어", 80);
studentKim.setMathSubject("수학", 70);
studentKim.showStudentScore();
//학생3동작 총점구하기
Student studentPark = new Student(3, "Park");
studentPark.setKoreaSubject("국어", 60);
studentPark.setMathSubject("수학", 50);
studentPark.showStudentScore();
}//end of main
}//end of class
클래스 설계 : getter, setter 연습 , 방어적 코드 사용
package ch07;
public class Hero {
private String name;
private int hp;
private double defense;
private int level;
//get
public String getName() {
return name;
}//end of get
//set
public void setName(String name) {
//방어적 코드 작성
if(name == null || name == "" || name.length() < 2) {
System.out.println("잘못된 입력입니다. 이름을 다시 입력해주세요");
}else {
this.name = name;
}//end of if
}//end of set
//hp, defense, level
//get,set 메서드를 만들어 주세요
//메서드를 설계하는 코드 작성
//
public int getHp() {
return hp;
}
public void setHp(int hp) {
if(hp < 0) {
System.out.println("잘못입력하셨습니다.");
}
this.hp = hp;
}
//
public double getDefense() {
return defense;
}
public void setDefense(double defense) {
if(defense < 0) {
System.out.println("잘못입력하셨습니다.");
}else {
this.defense = defense;
}
}
//
public double getLevel() {
return level;
}
public void setLevel(int level) {
if(level < 0) {
System.out.println("잘못입력하셨습니다.");
}else {
this.level = level;
}
}
//main함수
public static void main(String[] args) {
//Hero 객체 생성 후 getter, setter 메서드를 사용해 보세요.
Hero hero = new Hero();
hero.setName("야스오");
// == new Hero();
String name = hero.getName();
System.out.println("돌려받은 값 : " + name);
}//end of main
}//end of class
은행 클래스 설계
package ch07;
public class Bank {
//정보은닉
private int balance;
//멤버변수를 정보은닉해서 getter,setter를 이용 대표적인 oop방식
//메서드
//입금기능
public void deposit(int money) {
//this.balance =this.balance + money;
this.balance += money;
}
//출금기능
public int withdraw(int money) {
this.balance -= money;
return money;
}
public void showInfo() {
System.out.println("현재잔액은 : " + this.balance + "입니다.");
}
//getter 메서드 만들기
//일반적으로 get()메서드를 만들어서 외부에서 확인할 수 있도록 구현한다.
public int getBalance() {
return this.balance;
}
//setter메서드 만들기
//일반적으로 set() 메서드를 제공해서
//외부에서 멤버변수에 접근할 수 있도록 구현한다.
public void setBalance(int balance) {
if(balance < 0) {
System.out.println("잘못된 입력입니다.");
}else {
this.balance = balance;
}
}
//public class는 .java파일 안에 단 하나만 사용할 수 있다
class Student{
}
}//end of class
은행 클래스 사용, 접근 지시 제어자 설명
package ch07;
public class MainTest1 {
public static void main(String[] args) {
Bank bank = new Bank();
//멤버변수에 성질 확인
// int balance --> 0
// double balance -->0.0
//String balance --> null
bank.deposit(10_000);
bank.showInfo();
//출금을 합니다.
int money = bank.withdraw(5_000);
System.out.println("돌려받은 금액 : " + money);
bank.showInfo();
//신입이 실수로 멤버변수에 바로 접근해서 잔액을 수정 함
// bank.balance = 100_000;
bank.showInfo();
//
//getter, setter
//read only
int returnMoney = bank.getBalance();
System.out.println(returnMoney);
//setter 사용해보기
bank.setBalance(-10000);
bank.showInfo();
//접근 제어 지시자 4가지
//1. public - 누구나 접근을 허용하게 한다
//2. default - 같은 패키지 내에서 접근을 허용한다.
// 아무것도 안적으면 default
//3. protected - 상속관계에서 접근을 허용한다.
//4. private - 같은 클래스에서만 접근을 허용한다.
}
}
this 사용한 클래스 설계, 사용
package ch08;
public class Person {
//this 란
//1. 인스턴스(객체) 자신의 메모리를 가리킨다.
//2. 생성자에서 또 다른 생성자를 호출할 때 사용할 수 있다.
//3. 자신의 주소(참조값, 주소값)를 반환 시킬 수 있다.
String name;
int age;
public Person(String name, int age) {
//1.자기자신을 가리키는 this
this.name = name;
this.age = age;
}
public Person() {
//기본 생성자에서 다른 생성자를 호출
this("이름없음", 1);
// this.name = "이름없음";
// this.age = 1;
}
//자신의 주소값(참조값)을 반환시킬 수 있다.
//빌더 패턴을 만들어 낼 수 있다..
public Person getPerson() {
return this;
}
public void setName(String name) {
this.name = name;
}
public void showInfo() {
System.out.println("이름 : " + name
+ ", 나이 : " + age);
}
//main
public static void main(String[] args) {
Person person1 = new Person();
person1.showInfo();
person1.setName("홍길동");
//참조값을 받아서 다른 인스턴스 변수에 주소를 할당해 보자.
Person person2 = person1.getPerson();
person2.showInfo();
person2.setName("이순신");
System.out.println("-----------------");
System.out.println(person1);
System.out.println(person2);
System.out.println("-----------------");
person1.showInfo();
person1.showInfo();
}//end of main
}//end
번호표 클래스 설계
package ch09;
public class NumberPrinter {
private int id;
private static int waitNumber = 1;
public NumberPrinter(int id) {
this.id = id;
}
// 번호표를 찍어 주세요
public void printWaitNumber() {
System.out.println(id + "기기의 대기순번 : " + waitNumber);
waitNumber++;
}
}
번호표 클래스 사용
package ch09;
public class MainTest1 {
public static void main(String[] args) {
NumberPrinter numberPrinter1 = new NumberPrinter(1);
NumberPrinter numberPrinter2 = new NumberPrinter(2);
NumberPrinter numberPrinter3 = new NumberPrinter(3);
numberPrinter3.printWaitNumber();
numberPrinter3.printWaitNumber();
numberPrinter3.printWaitNumber();
System.out.println("-----------------------");
//
numberPrinter1.printWaitNumber();
numberPrinter1.printWaitNumber();
numberPrinter1.printWaitNumber();
System.out.println("-----------------------");
//
numberPrinter2.printWaitNumber();
numberPrinter2.printWaitNumber();
numberPrinter2.printWaitNumber();
}//end of main
}
ex1> MainTest1, Warrior, Wizard 배운 것 추가하여 보수 설계
수업내용
[출처] https://blog.naver.com/devnote1 작성자 devnote1
'코리아 IT아카데미 > Java' 카테고리의 다른 글
7일차 | Marine·Zealot·Zergling설계, 랜덤·캘린더 유틸 사용, 싱글톤 패턴 만들기 (0) | 2021.10.26 |
---|---|
5일차 | 학생과 교통수단 클래스 설계, 마법사·전사 전투 과제 (0) | 2021.10.25 |
4일차 | 함수와 메서드 (0) | 2021.10.21 |
3일차 | if, for(구구단, 이중for문), while, do while, break, continue (0) | 2021.10.20 |
2일차 | 상수, 형 변환과 연산자 (0) | 2021.10.19 |