230323 풀스택 16일차 - 임베디드 실습(아두이노 펌웨어 환경 구축), 생성자

황인성·2023년 3월 23일
0

오늘 수업 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 이름);
}
classextends 무기{
	void 작동(String 이름) {
		System.out.println(이름 + "(이)가 활(으)로 공격합니다.");
	}
}
classextends 무기{
	void 작동(String 이름) {
		System.out.println(이름 + "(이)가 칼(으)로 공격합니다.");
	}
}
classextends 무기{
	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(사용자 + "이(가) " + 무기이름 + "(으)로 공격합니다.");
  }
}

classextends 무기 {() {
    무기이름 = "칼";
  }
}

classextends 무기 {() {
    무기이름 = "창";
  }
}

classextends 무기 {() {
    무기이름 = "활";
  }
}

abstract class 전사 {
  String 이름;
  무기 a무기;

  void 공격() {
    a무기.작동(이름);
  }
}

class 홍길동 extends 전사 {
  홍길동() {
    this.이름 = "홍길동";
  }
}

class 홍길순 extends 전사 {
  홍길순() {
    this.이름 = "홍길순";
    this.a무기 = new();
  }
}
profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글