[[TableOfContents]] = 참여자 명단 = || 단장 || 이길상 || 16학번 || 참여 || ||<|4> 단원 || 강필중 ||<|4> 21학번 || 참여 || || 권재민 || 참여 || || 김민경 || 참여 || || 이수은 || 참여 || = 수업 = == 진행 == 1. 장소 : 구글 미츠 2. 시간 : 19시 ~ 21시 == 내용 == '''주제''' * 추상 클래스와 인터페이스 - 각각의 역할과 차이점 - 어떤 상황에서 유용하게 쓸 수 있는가 '''ppt''' * [[https://drive.google.com/file/d/1RQZF9YqyS8EHpEeH2j6BZjLPoW8QXx7S/view?usp=sharing]] = 코드 = == 예제1 == {{{ public class App4 { public static void main(String[] args) { // 실행할 코드 iPhone iphone = new iPhone(); iphone.call("010-5556-8614"); iphone.lock(); iphone.call("119"); iphone.unlock(); iphone.call("112"); } } abstract class SmartPhone{ // 전화 걸기 abstract void call(String number); // 잠금 기능 abstract void lock(); // 잠금 해체 abstract void unlock(); } // Ctrl + . class iPhone extends SmartPhone{ Scanner sc = new Scanner(System.in); private boolean locked = false; private int pin; @Override void call(String number) { if(locked == false){ System.out.println("calling on iPhone : " + number); } else{ System.out.println("Message : Unlock first!"); } } @Override void lock() { if(locked == false){ System.out.println("Input Password : "); pin = sc.nextInt(); locked = true; } else{ System.out.println("Phone is already locked!"); } } @Override void unlock() { if(locked == true){ System.out.println("PIN: "); int input = sc.nextInt(); if(input == pin){ System.out.println("Correct PIN!"); locked = false; } else{ System.out.println("Wrong PIN! Try Again!"); } } else{ System.out.println("Phone is already unlocked!"); } } } }}} == 예제2 == {{{ public class App5 { public static void main(String[] args) { AirAttacker atk = new AirAttacker(); atk.attack("Player"); atk.fly(10, 5, 6); } } interface Flyable{ void fly(int x, int y, int z); } interface Moveable{ void move(int x, int y); } interface Attackable{ void attack(String target); } abstract class Unit{ int hp; int mp; int exp; Unit(int hp, int mp, int exp){ this.hp = hp; this.mp = mp; this.exp = exp; } abstract void attacked(int damage); abstract void defeated(); } interface FlyAttacker extends Flyable, Attackable{ abstract void airToground(); } class AirAttacker implements Flyable, Attackable{ @Override public void attack(String target) { System.out.println("Attack on : " + target); } @Override public void fly(int x, int y, int z) { System.out.println("Move to : " + x + y + z); } } class Dragon extends Unit implements FlyAttacker{ Dragon(int hp, int mp, int exp) { super(hp, mp, exp); //TODO Auto-generated constructor stub } @Override public void attack(String target) { // TODO Auto-generated method stub } @Override public void fly(int x, int y, int z) { // TODO Auto-generated method stub } @Override void attacked(int damage) { // TODO Auto-generated method stub } @Override void defeated() { // TODO Auto-generated method stub } @Override public void airToground() { // TODO Auto-generated method stub } } }}} = 숙제 = 1. 회고 작성 2. = 회고록 = '''권재민''' * 난이도: 6/10 * 후기: 개념적으로는 잘 이해된다. 아직 직접 코딩해본 경험이 적어서 사용은 좀 어렵다 ---- '''이수은''' * 난이도: 6/10 * 후기: 조금 왔다 갔다 하면서 설명해주시는 부분이 많아서 보기 조금 헷갈렸는데 그래도 잘 가르쳐 주셔서 좋았습니다. ---- '''김민경''' * 난이도: 7/10 * 후기: 따라갈만했습니다! 스크롤 올렸다 내렸다 많이 하셔서 따라적을 때 조금 오래걸린 것 같습니다. ---- '''강필중''' * 난이도: 7/10 * 후기: 상황을 토대로 수업을 진행하여 이해하고 언제 필요한지 알기는 편했으나 내용자체가 어렵다는 생각이 들었습니다 ---- '''이길상''' * 후기: ---- = 숙제 제출 = == 권재민 == {{{ 내용 }}} == 이수은 == {{{ 내용 }}} == 김민경 == {{{ 내용 }}} == 강필중 == {{{ 내용 }}} ---- ----------------------------------- [새싹교실/2021] [새싹교실/2021/카라반]