오늘 수업 12까지 펌웨어 구축환경 평가 진행
1, 2, 3차 발표를 해야 함
1차는 기획발표
2차는 중간발표
3차는 최종발표
멘토님 참관할 수도 있음
오늘 기획안 3줄이라도 작성해서 포스팅 할 것.
나중에 포트폴리오용 프로젝트는 따로 또 진행함
12시부터 객체, 클래스, 생성자 복습 및 진도 나감
각 무기 클래스에 중복코드가 있음
class Main {
public static void main(String[] args) {
전사 a전사 = new 홍길동();
a전사.a무기 = new 활();
a전사.공격();
// 출력 : 홍길동(이)가 활(으)로 공격합니다.
a전사 = new 홍길순();
a전사.공격();
// 출력 : 홍길순(이)가 칼(으)로 공격합니다.
a전사.a무기 = new 창();
a전사.공격();
// 출력 : 홍길순(이)가 창(으)로 공격합니다.
}
}
class 전사 {
무기 a무기; // a무기에 활과 칼과 창을 한 번에 받을 수 있게 무기객체타입 변수를 선언해줌.
String 전사이름;
void 공격() {
this.a무기.작동(전사이름);
}
}
class 홍길동 extends 전사{ // a전사가 둘이니까 전사 클래스에 홍길동과 홍길순을 상속시킴
홍길동 () {
전사이름 = "홍길동"; // 작동 메서드에서 받을 전사이름을 해당 클래스에서 생성자로 할당해줌.
}
}
class 홍길순 extends 전사{// a전사가 둘이니까 전사 클래스에 홍길동과 홍길순을 상속시킴
홍길순 () {
a무기 = new 칼(); // 홍길순이 받을 칼 객체가 없기 때문에 홍길순 생성자 안에서 new 칼();을 할당해줌
전사이름 = "홍길순"; // 작동 메서드에서 받을 전사이름을 해당 클래스에서 생성자로 할당해줌.
}
}
abstract class 무기 {
abstract void 작동(String 이름);
}
class 활 extends 무기{
void 작동(String 이름) {
System.out.println(이름 + "(이)가 활(으)로 공격합니다.");
}
}
class 칼 extends 무기{
void 작동(String 이름) {
System.out.println(이름 + "(이)가 칼(으)로 공격합니다.");
}
}
class 창 extends 무기{
void 작동(String 이름) {
System.out.println(이름 + "(이)가 창(으)로 공격합니다.");
}
}
병사의 진급 기능을 만들어주세요.
class Main {
public static void main(String[] args) {
병사 a병사 = new 병사();
a병사.이름 = "홍길동";
a병사.자기소개();
// 안녕하세요 저는 홍길동 이병 입니다.
a병사.진급();
a병사.자기소개();
// 안녕하세요 저는 홍길동 일병 입니다.
a병사.진급();
a병사.자기소개();
// 안녕하세요 저는 홍길동 상병 입니다.
}
}
class 병사 {
String 이름;
String 계급 = "이병";
int i = 0;
void 자기소개() {
System.out.println("안녕하세요 저는 "+ this.이름 + this.계급 + "입니다.");
}
void 진급() {
i++;
if (i == 0) {
this.계급 = "이병";
}else if (i == 1) {
this.계급 = "일병";
}else if (i == 2) {
this.계급 = "상병";
}
}
}
병사가 진급시 공격력도 올라가게 해주세요.
// 문제 : 아래 코드가 실행되도록 해주세요.
class Main {
public static void main(String[] args) {
병사 a병사 = new 병사();
a병사.이름 = "홍길동";
a병사.자기소개();
// 안녕하세요. 저는 홍길동 이병 입니다.
a병사.공격();
// 홍길동 이병이 공격합니다.(공격력 : 7)
a병사.진급();
a병사.자기소개();
// 안녕하세요. 저는 홍길동 일병 입니다.
a병사.공격();
// 홍길동 일병이 공격합니다.(공격력 : 9)
a병사.진급();
a병사.자기소개();
// 안녕하세요. 저는 홍길동 상병 입니다.
a병사.공격();
// 홍길동 상병이 공격합니다.(공격력 : 11)
}
}
class 병사 {
String 이름;
int 계급번호;
병사() {
계급번호 = 1;
}
int get공격력() {
int 공격력 = 0;
if ( 계급번호 == 1 ) {
공격력 = 7;
}
else if ( 계급번호 == 2 ) {
공격력 = 9;
}
else if ( 계급번호 == 3 ) {
공격력 = 11;
}
return 공격력;
}
String get계급() {
String 계급 = "";
if ( 계급번호 == 1 ) {
계급 = "이병";
}
else if ( 계급번호 == 2 ) {
계급 = "일병";
}
else if ( 계급번호 == 3 ) {
계급 = "상병";
}
return 계급;
}
void 자기소개() {
System.out.println("안녕하세요. 저는 " + this.이름 + " " + this.get계급() + " 입니다.");
}
void 공격() {
System.out.println(this.이름 + " 이병이 공격합니다.(공격력 : " + this.get공격력() + ")");
}
void 진급() {
계급번호++;
}
}
홍길동과 홍길순은 둘 다 전사이고 공격할 수 있는 능력이 있습니다.
class Main {
public static void main(String[] args) {
전사 a전사 = new 홍길동();
a전사 = new 홍길동();
a전사.공격();
// 출력 : 홍길동이(가) 공격합니다.
a전사 = new 홍길순();
a전사.공격();
// 출력 : 홍길순이(가) 공격합니다.
}
}
class 전사 {
전사 a전사;
String 이름;
void 공격 () {
System.out.println(this.이름 + "이(가) 공격합니다.");
}
}
class 홍길동 extends 전사 {
홍길동 () {
this.이름 = "홍길동"; // 생성자를 사용해서 홍길동 클래스 안에서 이름 변수에 대해 "홍길동" 값을 할당함.
}
}
class 홍길순 extends 전사 {
홍길순 () {
this.이름 = "홍길순"; // 생성자를 사용해서 홍길동 클래스 안에서 이름 변수에 대해 "홍길순" 값을 할당함.
}
}
전사 홍길동과 홍길순은 다양한 무기를 이용해서 공격합니다.
// 문제 : 아래가 실행되도록 해주세요.
class Main {
public static void main(String[] args) {
전사 a전사 = new 홍길동();
a전사.a무기 = new 활();
a전사.공격();
// 출력 => 홍길동이(가) 활(으)로 공격합니다.
a전사 = new 홍길순();
a전사.공격();
// 출력 => 홍길순이(가) 칼(으)로 공격합니다.
a전사.a무기 = new 창();
a전사.공격();
// 출력 => 홍길순이(가) 창(으)로 공격합니다.
}
}
abstract class 무기 {
String 무기이름;
void 작동(String 사용자) {
System.out.println(사용자 + "이(가) " + 무기이름 + "(으)로 공격합니다.");
}
}
class 칼 extends 무기 {
칼() {
무기이름 = "칼";
}
}
class 창 extends 무기 {
창() {
무기이름 = "창";
}
}
class 활 extends 무기 {
활() {
무기이름 = "활";
}
}
abstract class 전사 {
String 이름;
무기 a무기;
void 공격() {
a무기.작동(이름);
}
}
class 홍길동 extends 전사 {
홍길동() {
this.이름 = "홍길동";
}
}
class 홍길순 extends 전사 {
홍길순() {
this.이름 = "홍길순";
this.a무기 = new 칼();
}
}