티스토리 뷰
package Day190715;
class Programmer{
private String name;
private int age;
private Project now;
private Project[] history = new Project[50];
Project project;
private int cnt = 0;
private int sum = 0;
Programmer(String name, int age){
this.name = name;
this.age = age;
}
//현재 진행중인 Project를 설정
public void joinProject(Project p) {
this.now = p;
}
//project 경력을 추가(history)
public void addProjectHistory(Project p) throws Exception {
if(cnt > 4) {
throw new Exception("Project History는 5개까지 추가가능합니다.");
}
history[cnt++] = p;
}
//현재 Project를 리턴
public Project getNowProject() {
return project;
}
//Project 경력을 출력
public void printProjectHistory() {
for(int i = 0; i < cnt; i++)
{
System.out.println("프로젝트명 :" + history[i].getName() + ", 수행기간 :" + history[i].getMonth());
}
}
//모든 Project의 총 경력의 합을 리턴(x년 x월)
String getTotalHistory(){
for(int i = 0; i < cnt; i++)
{
sum += history[i].getMonth();
}
int year = sum/12;
int month = sum - (12*year);
return year + "년" + month + "월";
}
}
class Project {
private String name;
private int month;
private String company;
Project(String name, int month, String company){
this.name = name;
this.month = month;
this.company = company;
}
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
int getMonth() {
return month;
}
void setMonth(int month) {
this.month = month;
}
}
public class ProjectTest {
public static void main(String[] args) {
Programmer pg = new Programmer("염민주", 25);
Project p1 = new Project("project1", 10, "회사1");
Project p2 = new Project("project2", 7, "회사2");
Project p3 = new Project("project3", 5, "회사3");
Project p4 = new Project("project4", 5, "회사4");
Project p5 = new Project("project5", 5, "회사5");
Project p6 = new Project("project6", 5, "회사6");
pg.joinProject(p1);
try {
pg.addProjectHistory(p1);
pg.addProjectHistory(p2);
pg.addProjectHistory(p3);
pg.addProjectHistory(p4);
pg.addProjectHistory(p5);
pg.addProjectHistory(p6);
}catch(Exception e) {
e.printStackTrace();
}
pg.printProjectHistory();
System.out.println(pg.getTotalHistory());
}
}
<문제>
오전실습: 소스코드로 전환
• Programmer
1.속성: private String name, private int age, private Project now, private Project[] history
2.함수
-void joinProject(Project p): 현재 진행중인 Project를설정
-void addProjectHistory(Project p): Project경력을 추가
-Project getNowProject(): 현재Project를 리턴한다
-void printProjectHistory(): Project 경력을 출력한다
-String getTotalHistory: 모든 Project의 총 경력의 합을 리턴한다(x년x월)
-void setTotalHistory(Project[] p): 총 경력을 설정한다
* 참고
- Project History는 5개까지 가능: 5개를 넘게 추가 시 Exception 발생
“Project History는 5개까지 추가가능합니다”
• Project
- 속성:private (String)name, private (int)month, private String company
- 메소드:
String getName(): Project명 리턴
void setName(String name): Project명 설정
intgetMonth(): Project 수행기간을 월로 리턴
void setMonth(int month): Project 수행기간을 설정
-------------------------------------------------------
오후실습: 분석
• Teacher, Student에 대한 클래스를 상속/다형성을 반영하여 설계하라
실습1