Download presentation
Presentation is loading. Please wait.
1
제 4 장 클래스 작성 4-1 LAB
2
Contents Class 와 method 작성해보기 ① Class 와 method 작성해보기 ②
3
Class와 method 작성해보기 ① Account.java, ManageAccount.java
// ************************************************************* // Account class는 예금, 출금, 명의변경, 수수료부과, // 계좌 정리 출력하는 method를 가지고 있다. public class Account { private double balance; private String name; private long acctNum; // // Constructor - balance, owner, account number 초기화 public Account (double initBal, String owner, long number) balance = initBal; name = owner; acctNum = number; }
4
// ---------------------------------------------------------. //
// // 예금잔액을 통해 출금 가능 여부를 체크한다. // 예금잔액 > 인출금액 : 잔액에서 인출 금액을 차감 // 예금잔액 < 인출금액 : message 출력 // public void withdraw (double amount) { if (balance >= amount) balance -= amount; else System.out.println ("Insufficient funds"); } // // 입금시 예금 잔액 조정 // public void deposit (double amount) { balance += amount; } // // 예금잔액 반환 // public double getBalance() { return balance; }
5
// ---------------------------------------------------------. //
// // string(name, account number, balance를 포함) 반환 // public String toString() { } // // 세금 부과 - 10$ public void chargeFee() { } // 계좌의 명의 변경 public void changeName (String newName)
6
// *************************************************************
// ManageAccount.java // // ManageAccount Class를 이용하여 Sally 와 Joe의 계좌를 // 생성하고 관리한다. public class ManageAccounts { public static void main(String[] args) Account acct1, acct2; // Sally의 $1000 계좌 생성. acct1 = new Account (1000, "Sally", 1111); // Joe의 $500 계좌 생성. // Joe의 계좌에 $100 예금하기. // Joe의 예금 잔액 출력하기.(get Balance() 사용) // Sally의 계좌에서 50$ 인출하기. // Sally의 예금 잔액 출력하기.(get Balance() 사용) // 두 계좌의 세금 부과하기. // Joe의 계좌에서 이름을 Joseph로 바꾸기. // 두 계좌의 내역을(입/출금, 세금) 출력하기. }
7
Class와 method 작성해보기 ① Cont.
Account.java를 완성해보자. toString(), chargeFee(), changeName() 을 완성하라. chargeFee()를 수정하라. return 값을 void new balance 로!! ManageAccount.java를 완성해보자. 주석의 설명을 따른다.
8
Class와 method 작성해보기 ① Cont.
ManageAccount.java를 수정해보자. chargeFee를 call한 후, balance를 출력하도록!! 수정 전 deposit/withdraw 후 getBalance()에서 Balance return. 수정 후 deposit/withdraw 후 chargeFee()에서 Balance return!! 이 때, balance를 출력하는 방법에는 2가지가 있다. balance를 변수에 저장한 다음, 변수를 출력. chargeFee()에 출력문 포함.
9
Class와 method 작성해보기 ② Student.java, Grades.java
// ************************************************************** // Student.java // // Student class that stores name, score on test 1, and // score on test 2. Methods prompt for and read in grades, // compute the average, and return a string containing student's info. import java.util.Scanner; public class Student { // instance data 선언 - 학생 이름, test 1 점수, test 2 점수 // // Constructor public Student (String studentName) // Constructor body 추가 }
10
// ---------------------------------------------------------
// inputGrades : 학생의 test grade를 입력받음. public void inputGrades() { // inputGrades의 body 추가 } // // getAverage : 학생의 test average를 계산하고 반환. // getAverage의 header 추가 // getAverage의 body 추가 // getName : 학생이름을 출력. // getName의 header 추가 // getName의 body 추가
11
// *************************************************************
// Grades.java // // Student class를 이용하여 두 학생의 test grade와 average를 // 가져온다. public class Grades { public static void main(String[] args) Student student1 = new Student ("Mary"); // student2, "Mike"를 생성. // Mary의 grade를 입력받는다. // Mary의 average를 출력한다. System.out.println(); // Mike의 grade를 입력받는다. // Mike의 average를 출력한다. }
12
Class와 method 작성해보기 ② Cont.
Student.java를 완성해보자. 주석의 설명을 따른다. 입력을 받기 위한 Scanner object를 생성해야 함. Grades.java를 완성해보자. average 출력 부분. name과 average를 출력한다. 예) The Average for Joe is 87.
13
Class와 method 작성해보기 ② Cont.
Grades.java를 수정해보자. 학생 변수의 값을 직접 출력해보자. 예) System.out.println (“Student 1 : “ + student1); 컴파일 후 결과를 살펴보자. Student.java를 수정해보자. toString()을 추가한다. System.out.println을 사용하지 않는다. return 값 : String (학생 이름과 점수) 예) Name : Joe Test1 : 85 Test2 : 91 주의 : Grades.java는 수정하지 않는다. toString()을 명시적으로 호출하지 않는다.
14
Class와 method 작성해보기 ③ BandBooster class를 작성해보자. Constructor
parameter : 후원자 이름 (String) boxesSold = 0 으로 set. Data 선언 – instance data name (String) boxesSold (Integer) Method 선언 getName() : 후원자 이름을 return. parameter 없음. updateSales() : parameter 1개. – 추가 판매한 box 개수 toString() : String을 return. – 후원자 이름, 판매한 box 개수 예) Joe : 16 boxes.
15
Class와 method 작성해보기 ③ Cont.
bandbooster 객체를 이용하여 2명의 후원자의 3주간 판매 실적을 알아보는 class를 작성하여라. 후원자 2명의 이름을 입력 받고, 각각의 객체를 구성. 각 후원자가 각 주에 판매한 박스 개수를 입력 받는다. 예) “Enter the number of boxes sold by Joe this week: “ 각 후원자당 판매한 박스 개수를 3번 입력 받음. updateSales()를 이용하여 update한다. 후원자의 이름과 총 판매량을 출력한다. - toString()을 사용한다.
16
Class와 method 작성해보기 ④ Name class를 작성해보자. Constructor Method
public Name(String first, String middle, String last) 주의 : 대/소문자로 바꾸지 말고, 있는 그대로 사용할 것!! Method public String getFirst : return first name public String getMiddle : return middle name public String getLast : return last name public String firstMiddleLast() : return full name 예 ) “ Mary Jane Smith”
17
Class와 method 작성해보기 ④ Cont.
public String LastfirstMiddle() : return full name 예) “ Smith, Mary Jane” public boolean equals() return true : 다름 사람의 이름과 비교해서 같을 때. 힌트 : String method - equalsIgnoreCase() 사용! equals()와 비슷하나 대소문자 구분 하지 않음. public String initials() : return initials. - 각 부분의 첫 번째 글자, 모두 대문자. 힌트 : charAt 대신 substring을 사용하라. public int length() : return total number of char. - full name의 총 문자 수, space 포함하지 않음!
18
Class와 method 작성해보기 ④ Cont.
TestNames.java를 작성해보자. 두 사람의 이름을 입력 받는다. First, middle, last name을 각각 입력 받는다. 두 사람 각각에 대해 객체를 생성한다. Name class의 method를 사용한다. 각 이름에 대해 아래 사항을 출력한다. first – middle – last version last – first – middle version initials length comparison result : same or different
Similar presentations