## 주제 - 자바 프로그래밍 입문 ## 목표 - 자바를 활용한 나만의 프로그램 만들기! ## 커리큘럼 ### Part 1: 헬로 자바 1. 자바 기본 문법 2. 메소드와 조건문 3. 반복문과 배열 ### Part 2: 객체지향의 세계로! 4. 클래스와 객체 5. 자바 API 6. 상속과 인터페이스 7. 파일 입출력 8. 실전 프로젝트 ## 대상 - 프로그래머를 꿈꾸는 당신! ## 시간 및 장소 - 협의 ## 연락처 - 카톡: chaesam - 메일: sehongpark@cloudstudying.kr
# 자바 프로그래밍 시작하기 --- ## 발표준비 1. **프로그래밍**(programming)이란? (https://cloudstudying.kr/questions/251) 2. **컴파일링**(compiling)이란? (https://cloudstudying.kr/questions/273) 2. 자바의 특징 - **객체지향**(Object-Oriented)이란? (https://cloudstudying.kr/questions/252) 3. 컴퓨터의 3대 구성요소 - **CPU**, **Memory**, **I/O Device**란? (https://cloudstudying.kr/questions/255) ## 실습하기 1. 헬로월드 (https://cloudstudying.kr/challenges/56) 2. 자기소개 (https://cloudstudying.kr/challenges/57) ## 확인하기 1. **클래스**(class)란? (https://cloudstudying.kr/questions/258) 2. **주석**(comment)이란? (https://cloudstudying.kr/questions/259) 3. **메인 메소드**(method)란? (https://cloudstudying.kr/questions/260) 4. **문자열**(string)을 출력하려면? ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 변수와 타입 그리고 연산자 --- ## 발표준비 1. **변수**란? (https://cloudstudying.kr/questions/256) 2. **타입**이란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/257) 3. **연산자**란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/258) ## 실습하기 1. 시험 점수 입력 (https://cloudstudying.kr/challenges/58) 2. 입력 값 받아오기 (https://cloudstudying.kr/challenges/60) 3. 이번 주 수입은? (https://cloudstudying.kr/challenges/59) 4. 두 수의 곱과 몫 (https://cloudstudying.kr/challenges/163) 5. 속도 변환하기 (https://cloudstudying.kr/challenges/154) 6. 시간 변환하기 (https://cloudstudying.kr/challenges/170) ## 확인하기 1. **문자열**에 **변수**를 더하려면? (https://cloudstudying.kr/questions/261) 2. `printf()` 메소드 사용법? (https://cloudstudying.kr/questions/262) ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연산자 우선순위와 문자열 연결하기 --- ## 발표준비 1. **연산자 우선순위**란? (https://cloudstudying.kr/questions/264) 2. **문자열**(String)이란? (https://cloudstudying.kr/questions/265) 3. 여러 **문자열**을 **연결**하려면? (https://cloudstudying.kr/questions/265) ## 실습하기 1. 떡튀순 모두 얼마? (https://cloudstudying.kr/challenges/62) 2. 한 주간 평균 몸무게 (https://cloudstudying.kr/challenges/63) 3. 문자열 연결하기 (https://cloudstudying.kr/challenges/64) 4. 프로필 만들기 (https://cloudstudying.kr/challenges/5) 5. 원기둥의 부피와 겉넓이 (https://cloudstudying.kr/challenges/166) ## 확인하기 1. 다음 코드의 실행 결과는? ``` int a = 3; int b = 7; int c = 9; System.out.println("결과: " + a + b * (a - c)); ``` 2. `Math.PI`는 무엇? (https://cloudstudying.kr/questions/266) ## 피드백 - 추가로 궁금한 점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 자바 기본 문법 --- ## 복습하기 - 프로그래밍, 객체지향, CPU, Memory, I/O Device, main(), println(), 문자열 - 변수, 타입, 연산자, 연산자 우선순위, printf(), Math ## 연습문제 1. 이번달 월급은? (https://cloudstudying.kr/challenges/68) 2. 절적한 수조의 온도는? (https://cloudstudying.kr/challenges/69) 3. 환전하기 (https://cloudstudying.kr/challenges/70) 4. 각 자리수의 합 (https://cloudstudying.kr/challenges/71) ## 확인하기 1. 메인 메소드에 전달값 입력 방법은? (https://goo.gl/S1bpHP) 2. 아래 코드의 실행 결과는? ``` int a = 42; int b = 2; int c = 4; int result = 0; result += a; result *= b; result %= c; System.out.println(result); ``` ## 피드백 - 추가로 궁금한 점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 타입과 형변환 --- ## 발표준비 1. **타입 불일치**(type mismatched)란? (https://cloudstudying.kr/questions/267) 2. 타입 **캐스팅**(type casting)이란? (https://cloudstudying.kr/questions/268) - 업 캐스팅(= auto casting) - 다운 캐스팅(= explicit casting) ## 실습문제 1. 나눗셈 연산 주의점 (https://cloudstudying.kr/challenges/73) 2. 타입 불일치 해결 (https://cloudstudying.kr/challenges/74) 3. 타입변환 연습 (https://cloudstudying.kr/challenges/75) 4. 문자열을 숫자로 (https://cloudstudying.kr/challenges/76) ## 확인하기 1. 다음 코드의 결과는? ``` int a = 5 / 2; double b = 5 / 2; ``` 2. 해당 코드의 문제점과 해결책은? ``` String seven = 7; ``` 3. 아래 코드의 수행 과정은? ``` double x = 82.45; double y = (int) x; double z = (int) y / 8; ``` 4. 다음 코드의 출력 결과는? ``` String str = "5"; int num = Integer.parseInt(str); System.out.println(str + num); ``` ## 피드백 - 추가로 궁금한 점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 메소드(method) --- ## 발표준비 1. **메소드**(method)란? (https://cloudstudying.kr/questions/269) 2. 메소드의 **특징**은? (https://cloudstudying.kr/questions/269) - 입력과 반환 - 일련의 코드를 압축(abstract) 3. 메소드의 구조는? (https://cloudstudying.kr/questions/269) - **타입**(type) - **메소드명**(name) - **입력변수**(parameter) - **반환값**(return) 4. 변수의 활동영역**(scope)**이란? ## 실습내용 1. 메소드의 실행흐름 (https://cloudstudying.kr/challenges/44) 2. 라면 끓이기 (https://cloudstudying.kr/challenges/82) 3. 단일 파라메터 메소드 (https://cloudstudying.kr/challenges/77) 4. 다중 파라미터 메소드 (https://cloudstudying.kr/challenges/78) 5. 잘못된 파라미터 (https://cloudstudying.kr/challenges/83) 6. 리턴 값이 있는 메소드 (https://cloudstudying.kr/challenges/79) 7. 변수의 스코프 (https://cloudstudying.kr/challenges/84) 8. 내가 먹은 삼겹살은 몇 칼로리? (https://cloudstudying.kr/challenges/85) ## 확인하기 1. `void` 타입 메소드란? (https://cloudstudying.kr/questions/270) 2. 다음 메소드를 호출하여 정수 `7`을 얻으려면? ``` public static int add (int a, int b) { return a + b; } ``` 3. 해당 메소드의 문제점은? ``` public static int cube(double x) { return x * x * x; } ``` 4. 아래 코드의 실행 흐름을 **스택**(stack) 호출과정으로 표현? ``` public class VariableScope2 { public static void method(int x) { System.out.println("method x = " + x); x = x * x; System.out.println("method x = " + x); } public static void main(String[] args) { int x = 5; System.out.println("main x = " + x); method(x); System.out.println("main x = " + x); } } ``` ## 피드백 - 추가로 궁금한 점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 메소드 --- ## 복습하기 - 형변환(casting), 업/다운 캐스팅, 문자열을 정수로, 정수를 문자열로 - 메소드, 변수의 스코프(scope), void와 int 차이, 메소드 실행 흐름과 스택(stack) ## 연습문제 1. 칼로리 소모량은? (https://cloudstudying.kr/challenges/80) 2. 자동차의 연비는? (https://cloudstudying.kr/challenges/81) 3. 돈 놓고 돈 먹기 (https://cloudstudying.kr/challenges/86) ## 확인하기 - 임의의 난수를 만드는 법? (https://cloudstudying.kr/questions/263) ## 피드백 - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 조건문(conditionals) --- ## 발표준비 1. **조건문**(conditionals)이란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/271) 2. **비교 연산자**란 무엇이고, 그 종류는? (https://cloudstudying.kr/questions/275) 3. **논리 연산자** AND, OR 그리고 NOT은? (https://cloudstudying.kr/questions/276) ## 실습하기 1. 성인 인증이 필요합니다 (https://cloudstudying.kr/challenges/87) 2. 레어 아이템 (https://cloudstudying.kr/challenges/88) 3. 멋진 회사의 조건 (https://cloudstudying.kr/challenges/89) 4. 버스 카드 (https://cloudstudying.kr/challenges/90) ## 확인하기 다음 코드의 실행 흐름을 스택 메모리 그림을 통해 설명하시오. ``` class IfStatement3 { public static void test(int x) { if (x > 5) { System.out.println(x + " is > 5"); } else if (x == 5) { System.out.println(x + " equals 5"); } else { System.out.println(x + " is < 5"); } } public static void main(String[] arguments) { test(6); test(5); test(4); } } ``` ## 피드백 - 아쉬운 점이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 연습문제 - 조건문 --- ## 복습하기 - if, else, elseif, 비교 연산자, 논리 연산자 ## 연습문제 1. 문자열을 숫자로 출력하기 (https://cloudstudying.kr/challenges/259) 2. 다이어트 (https://cloudstudying.kr/challenges/16) 3. 엘레베이터 (https://cloudstudying.kr/challenges/158) 4. 임금 계산하기 (https://cloudstudying.kr/challenges/17) ## 확인하기 1. switch문이란? 2. 삼항 연산자란? ## 피드백 - 아쉬운 점이 있다면? - 어떻게 개선하면 좋을까? - 좋았던 점 나누기!
# 반복문 --- ## 발표준비 1. **반복문**이란? 2. `while`과 `for`의 차이? 3. **분기문**이란? - `break` - `continue` 4. 중첩된(**nested**) 반복문이란? ## 실습하기 1. 카운트 다운 (https://cloudstudying.kr/challenges/91) 2. 1부터 10까지 (https://cloudstudying.kr/challenges/92) 3. 다이어트 실패 (https://cloudstudying.kr/challenges/195) 4. break (https://cloudstudying.kr/challenges/93) 5. continue (https://cloudstudying.kr/challenges/94) 6. 네모네모 (https://cloudstudying.kr/challenges/95) 7. 공포의 별찍기 (https://cloudstudying.kr/challenges/96) ## 확인하기 1. 출력 결과는? ``` int i = 0; int n = 0; while (i < 10) { n = n + i; i++; } System.out.println(n); ``` 2. 출력 결과는? ``` String str = ""; for (int i = 0; i < 5; i++) { str += i; } System.out.println(str); ``` 3. 출력 결과는? ``` for (int i = 0; i < 5; i++) { for (int j = 0; j < i + 2; j++) { System.out.print("#"); } System.out.println(); } ``` ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 배열 --- ## 발표준비 1. **배열**이란? 2. 두 가지 **배열 생성법**은? 3. **배열 사용법**은? - 가져오기(read) - 변경하기(update) - 배열의 길이(`length`) ## 실습하기 1. 당신의 학점은? (https://cloudstudying.kr/challenges/99) 2. 아메리카노 (https://cloudstudying.kr/challenges/100) 3. 배열의 합 (https://cloudstudying.kr/challenges/101) 4. 배열 요소 찾기 (https://cloudstudying.kr/challenges/179) 5. 지역별 접속자 수 (https://cloudstudying.kr/challenges/104) 6. 하루 평균 접속자 (https://cloudstudying.kr/challenges/105) ## 확인하기 1. 주어진 코드의 출력 값은? ``` double[] arr = {1.5, -6.2, 4.3, -0.9}; System.out.printf("%.2f", arr[1]); ``` 2. 주어진 코드의 출력 값은? ``` int[] arr = {6, 4, 7, -9}; int n = arr[1]; n += arr[3]; n *= arr[2]; System.out.printf("%d", n); ``` 3. 주어진 코드의 출력 값은? ``` int[] values = new int[7]; System.out.println(values.length); ``` 4. 주어진 코드의 출력 값은? ``` double[] scores = {96.4, 82.8, 92.0, 86.8}; double sum = 0; for (int i = 0; i < scores.length; i++) sum += scores[i]; double average = sum / scores.length; System.out.printf("%.2f", average); ``` ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 반복문과 배열 --- ## 복습하기 - 반복문, while, for, break, continue - 배열, index, length ## 연습문제 1. 구구단 출력 (https://cloudstudying.kr/challenges/18) 2. 자음과 모음 (https://cloudstudying.kr/challenges/106) 3. 박테리아 (https://cloudstudying.kr/challenges/103) 4. 세 수의 곱 (https://cloudstudying.kr/challenges/162) 5. 1등은 누구? (https://cloudstudying.kr/challenges/108) ## 확인하기 1. 다음 코드의 실행 결과는? ``` public static void main(String[] args) { int[] arr = createArray(3, 7); System.out.printf("%d * %d = %d\n", arr[0], arr[1], arr[0] * arr[1]); } public static int[] createArray(int a, int b) { return new int[] { b, a }; } ``` 2. 다음 코드의 실행 결과는? ``` System.out.println((int) Math.pow(2, 3)); ``` 3. 다음 코드의 실행 결과는? ``` int[] arr = { 11, 22, 33, 44 }; System.out.println(Arrays.toString(arr)); ``` 4. 다음 코드의 실행 결과는? ``` for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { int sum = 0; for (int n = 0; n < i + j; n++) { sum += n; } System.out.printf("%d ", sum); } System.out.println(); } ``` ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 클래스와 객체 --- ## 발표준비 1. **객체지향 프로그래밍**(OOP)이란? (https://cloudstudying.kr/questions/252) 2. **클래스**와 **객체**의 차이? (https://cloudstudying.kr/questions/282) 3. **필드**(field)와 **메소드**(method)란? (https://cloudstudying.kr/questions/283) 4. **클래스 다이어그램**이란? (https://cloudstudying.kr/questions/284) ## 실습하기 1. 햄버거 클래스 (https://cloudstudying.kr/challenges/112) 2. 영웅 클래스 (https://cloudstudying.kr/challenges/114) 3. 텀블러 클래스 (https://cloudstudying.kr/challenges/229) 4. 도서 클래스 (https://cloudstudying.kr/challenges/232) ## 확인하기 1. 다음 코드의 실행 결과는? ``` public class Main { public static void main(String[] args) { AlarmClock clock = new AlarmClock(); clock.time = "7시 10분"; clock.repeat = 2; clock.ring(); } } class AlarmClock { String time; int repeat; void ring() { for (int i = 0; i < repeat; i++) System.out.printf("%s이 되었습니다!\n", time); } } ``` 2. 다음 코드의 실행 결과는? ``` public class Main { public static void main(String[] args) { Pizza p = new Pizza(); p.name = "슈퍼콤비네이션"; p.size = "라지"; p.price = 14900; p.print(); } } class Pizza { String name; String size; int price; void print() { System.out.printf("[%s 피자] 사이즈: %s, 가격: %d원\n", name, size, price); } } ``` ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 객체의 생성과 사용 --- ## 발표준비 1. **인스턴스**란 무엇이고, 어떻게 생성? (https://cloudstudying.kr/questions/285) 2. 인스턴스 **메소드 호출**법? (https://cloudstudying.kr/questions/286) 3. 같은 클래스로 **다른 인스턴스 생성**법? (https://cloudstudying.kr/questions/287) ## 실습하기 1. 쥬리오의 펀치 (https://cloudstudying.kr/challenges/115) 2. 팥, 야채, 피자 호빵 (https://cloudstudying.kr/challenges/116) 3. 에러를 찾아라 (https://cloudstudying.kr/challenges/202) 4. 정사각형 (https://cloudstudying.kr/challenges/230) 5. 원기둥 (https://cloudstudying.kr/challenges/231) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 생성자와 클래스 타입 --- ## 발표준비 1. **생성자**(constructor)란? (https://cloudstudying.kr/questions/291) 2. **객체**(instance)를 생성과 동시에 **초기화**하려면? (https://cloudstudying.kr/questions/292) 3. **클래스 타입**이란? (https://cloudstudying.kr/questions/293) ## 실습하기 1. 생성자를 통한 객체 값 초기화 (https://cloudstudying.kr/challenges/117) 2. 격투 게임 (https://cloudstudying.kr/challenges/118) 3. 생성자와 toString() 메소드 (https://cloudstudying.kr/challenges/161) 4. 재고 관리 (https://cloudstudying.kr/challenges/233) 5. 은행 계좌 만들기 (https://cloudstudying.kr/challenges/241) 6. 학생 클래스 (https://cloudstudying.kr/challenges/253) 7. 최소-최대값 구하기 (https://cloudstudying.kr/challenges/266) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 레퍼런스 변수와 스태틱 --- ## 발표하기 1. **레퍼런스**(reference) **변수**란? 2. **기본형**(primitive) 변수와 **레퍼런스** 변수의 **차이**는? 3. `static` 키워드란 **무엇**이고, **사용법**은? ## 실습하기 1. 원본일까 사본일까? (https://cloudstudying.kr/challenges/119) 2. 전체 학생 수 (https://cloudstudying.kr/challenges/120) 3. 클래스 메소드 vs 일반 메소드 (https://cloudstudying.kr/challenges/125) 4. 두 점 사이의 거리 (https://cloudstudying.kr/challenges/196) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 클래스와 객체 --- ## 복습하기 - OOP, 클래스, 객체, 필드, 메소드, 클래스 다이어그램 - 인스턴스, 인스턴스 메소드, 서로 다른 인스턴스 확인, - 생성자, 디폴트 생성자, 클래스 타입 - 레퍼런스 변수, 기본형 변수, 클래스 메소드, 클래스 변수 ## 연습문제 1. Circle 객체 만들기 - https://cloudstudying.kr/challenges/220 2. 리얼 격투 게임 - https://cloudstudying.kr/challenges/121 3. 당신의 연봉은? - https://cloudstudying.kr/challenges/122 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 접근 제한자와 게터 세터 --- ## 발표준비 1. **접근 제한자**(access modifier)란 **무엇**이고 **왜** 사용? 2. **접근 제한자**의 **종류** 3. **게터**(getter)와 **세터**(setter)란? ## 실습하기 1. 외부로부터 감추기 (https://cloudstudying.kr/challenges/131) 2. 감춰진 필드 읽어오기 (https://cloudstudying.kr/challenges/132) 3. 감춰진 필드 변경하기 (https://cloudstudying.kr/challenges/133) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 스코프(scope)와 this --- ## 발표준비 1. **스코프**(scope)란? 2. `this` 키워드란? ## 실습하기 1. 계좌 이체 (https://cloudstudying.kr/challenges/134) 2. 스마트폰 (https://cloudstudying.kr/challenges/177) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 자바 API --- ## 발표준비 1. **자바 API**란? 2. **패키지**(`package`)란? 3. 자바 **API 문서**보는법? 4. `Random` 클래스란? 5. `ArrayList` 클래스란? ## 실습하기 1. Random 클래스 (https://cloudstudying.kr/challenges/135) 2. ArrayList 클래스 (https://cloudstudying.kr/challenges/136) 3. 단어 추출하기 (https://cloudstudying.kr/challenges/260) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 자바 API --- ## 복습하기 - 접근 제한자, private, public, 게터, 세터 - 메소드 스코프, 인스턴스 스코프, 클래스 스코프, this - 자바 API, package, Random, ArrayList ## 연습문제 1. 주사위 던지기 (https://cloudstudying.kr/challenges/38) 2. 연봉 지출 계산 (https://cloudstudying.kr/challenges/137) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 상속(inheritance) --- ## 발표준비 1. **상속**이란? 2. `super` 키워드란? 2. **메소드 오버라이딩**(overriding)이란? 3. `protected` 키워드란? ## 실습하기 1. 상속을 통한 클래스 확장 (https://cloudstudying.kr/challenges/138) 2. 메소드 오버라이딩 (https://cloudstudying.kr/challenges/139) 3. 대마법사로 3차전직 (https://cloudstudying.kr/challenges/140) 4. 스포츠 확장하기 (https://cloudstudying.kr/challenges/234) ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 상속과 생성자 호출 --- ## 발표하기 1. **상속 관계**에서의 **생성자 호출** 과정은? 2. **디폴트 생성자**란? ## 실습하기 1. 스포츠카 만들기 - https://cloudstudying.kr/challenges/141 2. 디폴트 생성자와 메소드 오버라이딩 - https://cloudstudying.kr/challenges/142 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 인터페이스(interface) --- ## 발표준비 1. **인터페이스**란? 2. 인터페이스의 *장점*? ## 실습하기 1. 학생의 본문 - https://cloudstudying.kr/challenges/174 2. 다형성 인생 - https://cloudstudying.kr/challenges/175 3. 칭구 아이가? - https://cloudstudying.kr/challenges/176 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 추상 클래스 --- ## 발표준비 1. **추상 클래스**란? 2. 추상클래스의 *장점*? ## 실습하기 1. 추상 클래스 추출하기1 - https://cloudstudying.kr/challenges/237 2. 추상 클래스 추출하기2 - https://cloudstudying.kr/challenges/239 ## 확인하기 ## 피드백 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!
# 연습문제 - 상속과 인터페이스 --- ## 복습하기 1. 상속, 메소드 오버라이딩 2. super, 디폴트 생성자 3. 인터페이스, 다형성, 그룹화 4. 추상 클래스 ## 연습문제 1. 각국 통화 화폐 - https://cloudstudying.kr/challenges/277 2. 쇼핑 장바구니 - https://cloudstudying.kr/challenges/279 3. 성기사와 마검사- https://cloudstudying.kr/challenges/263 ## 확인하기 - 추가로 궁금한점? - 아쉬운 부분이 있다면? - 어떻게 개선하면 좋을까? - 좋았던점 나누기!