제2주 예습, 실험 및 과제: Java 기본 문법 2, 객체 지향 기초
목차- 0. 과제 완료 안내
-
- 예습
- 1.1 학습 목표
- 1.2 예습 과제
- 1.3 수업 전 질문 목록
-
- 실험
-
- 수업 후 과제
- 3.1 온라인 학습 플랫폼
- 3.2 PTA 프로그래밍 (중요)
- 3.3 클래스룸 (사례 1-초기 접촉)
- 확장 자료
- 과제 완료 안내
-
본 예습의 "1.3 수업 전 질문 목록"은 수업 전에 완료하시고, 수업 관련 문제에 대해 토론할 예정입니다. Markdown 형식의 블로그 링크를 제출하여 확인할 수 있으며, 우수한 완성도를 보인 학생은 가점을 받을 수 있습니다.
-
수업 후 과제: 중요 클래스룸;
-
예습
간단한 예습 절차: 먼저 예습 자료를 보고, 안에 있는 문제를 꼼꼼히 풀어보세요. 필요에 따라 동영상을 시청합니다. 마지막으로 수업 전 질문 목록을 완료해보세요.
1.1 학습 목표
- 참조 타입 및 일반 클래스: 배열, 배열 리스트(ArrayList), 메소드 및 참조 타입을 메소드 매개변수로 사용하는 방법을 익힙니다.
- 클래스, 객체, 메소드, 속성 관련 기본 개념과 객체 초기화를 익힙니다.
- IDE를 사용하여 객체를 빠르게 생성할 수 있습니다.
1.2 예습 과제
- 예습 자료를 학습합니다.
- 온라인 학습 플랫폼의
- "제2장 Java 기본 문법" 장의: 메소드, 배열, 참조 데이터 타입.
- "제3장 객체 지향 기초" 기본 개념, 캡슐화 및 모듈화, 객체 초기화.
1.3 수업 전 질문 목록
- 메소드 관련 문제
public class Main {
static void modifyString(String text) {
text = "changed";
}
static void modifyArray(String[] stringArray) {
for (int i = 0; i < stringArray.length; i++) {
stringArray[i] = stringArray[i] + "_" + i;
}
}
public static void main(String[] args) {
String original = "hello";
modifyString(original);
System.out.println(original);
modifyArray(args);
System.out.println(Arrays.toString(args));
}
}
위 코드에 대해: 1.1 modifyString과 modifyArray의 기능은 각각 무엇인가요? 1.2 main 메소드의 original 변수가 변경되었나요? 그 이유는? 1.3 main 메소드의 args 배열 내용이 변경되었나요? 그 이유는? 1.4 args 배열의 값은 어디서 오는가요? 어떻게 값을 할당할 수 있나요?
- 배열 관련 문제 다음 프로그램에 대해
int[] numbers = new int[3];
numbers[0] = 1; numbers[1] = 1;
int[] reference = numbers;
numbers[0] = 2;
System.out.println(Arrays.toString(numbers));
System.out.println(Arrays.toString(reference));
2.1 이 프로그램의 출력 결과는 무엇인가요? 그 이유는?
String[] textArray = {"apple", "banana", "cherry"};
textArray[1] = "orange";
System.out.println(Arrays.toString(textArray));
2.2 String은 불변 클래스인데 왜 textArray[1]에 "orange"를 할당할 수 있나요?
-
int[4][]를 사용하여 2차원 배열을 정의하고, 두 번째 차원의 길이는 얼마나 되나요? 코드를 완성하고, foreach 또는 다른 반복 방법을 사용하여 이 2차원 배열을 순회해보세요. -
클래스와 객체의 차이점은 무엇인가요? Math 클래스는 객체가 있나요? String 클래스에는 어떤 private 속성과 public 메소드가 있나요? 왜 이렇게 설계되었는가요(두 가지 예로 설명해보세요)?
-
클래스 속성을 public으로 설정하면 다른 클래스에서 쉽게 접근할 수 있지만, 왜 Java에서는 보통 setter/getter 패턴을 사용하여 객체 속성에 접근하나요? 이것은 캡슐화와 어떤 관계가 있나요?
-
객체 속성은 언제 초기화할 수 있나요? 초기화하는 방법에는 어떤 것들이 있나요?
-
심화(선택 사항): 범위(scope)를 사용하여 캡슐화를 설명해보세요.
-
실험
제2차 실험 개요(Java 기본 문법 및 클래스 라이브러리). 가능한 실험 프로젝트를 미리 시도해보세요.
- 수업 후 과제
3.1 온라인 학습 플랫폼
- 동영상: a) 강의 내용과 슈퍌 플랫폼을 복습하며 제2장과 제3장 내용을 다시 보세요. "Scanner 클래스 사용법" 동영상이 특히 중요하며, 이 부분은 실험 내용과 관련이 있습니다.
- 토론 3.4 연습: Circle 클래스를 작성하고 코드를 공유해보세요 3.4 생각: 객체 초기화
- 장절 퀴즈 시간 제한: 장절 퀴즈 1(서론). 설명: 평소 성적에 반영되므로 신중하게 시작하세요.
3.2 PTA 프로그래밍 (중요)
완료: 문제집 Java-02-Java 기본 문법 시도해보기: 문제집 Java-03-객체 지향 1의 "3.1 생성자와 toString", "3.2 생성자와 초기화 블록".
3.3 클래스룸 (사례 1-초기 접촉)
프로젝트 사례 과제 1: 실행, 이해 및 학생 관리 시스템 재작성. 사례 기초 분석 보고서 1(기능 설명, 기본 문법 설명, 클래스 기능 설명)를 작성하세요. Markdown 형식으로 이 보고서를 작성해주세요.
자세한 내용은 클래스룸에 게시된 과제를 참조하세요.
확장 자료
참고 자료:
1. [Java 실험 교육 계획서](https://www.cnblogs.com/zhrb/category/1537297.html)
2. [PTA에 Java 프로그램 제출하는 몇 가지 팁](http://www.cnblogs.com/zhrb/p/6347738.html)
3. [Java9 관련 자료(JShell 간단 튜토리얼 등)](https://www.cnblogs.com/zhrb/p/7596171.html)
4. [IntelliJ IDEA 기본 사용법](https://www.cnblogs.com/zhrb/p/7446177.html)