새싹교실/2014/자르반 (rev. 1.29)
진행 ¶
- JAVA합니다 JAVA.
- 목요일 오후 2시 30분 6층 학회실
- 준비물: 몸, 멘탈, 노트북은 있으면 좋음.
- 수업 - 실습을 번갈아 가면서 할 예정이나, 2시간으로 되려나...?
3월 13일 ¶
- 참가자: 조영준, 강민승, 김영현, 김윤성
- 첫 번째 미팅!
- 시간과 장소를 정하고 - 목요일 2시 6P
- 주제를 정하고 - JAVA!
- 이름을 정하고 - 자르반!
- 아이스크림을 먹었습니다.
진행 ¶
- 이론
- 우리의 목표 / 원하는 것 생각하기
- 위키 사용법 안내
- 자바가 돌아가는 방법
및 자바 자랑
- 자바 개발 환경 구축
- 실습 - 일단 무작정 짜보기
- 짜다 보면 C와 유사한 점과 C와 다른 점을 몸으로 느낄 수 있다!
- 별 찍기 (System.out.println())
- 이름과 나이 입력받기 (Scanner input = new Scanner(System.in), String 클래스)
- 알아본 것들
- 파일 명과 클래스 명은 같아야 한다.
- 패키지-클래스-(매서드 / 필드) 구조로 되어있다.
- 매서드와 필드 옆에 이상한게 붙어있다.
- 이 외에는 대부분 C랑 비슷하나, C보다 개발자에게 친근하다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new java.util.Scanner(System.in);
String name = input.nextLine();
int a = input.nextInt();
System.out.println("제 나이는" + a + "살입니다.");
System.out.println("제 이름은" + name + "입니다.");
System.out.println(sum(3, 4));
}
public static int sum(int a, int b) {
return a + b;
}
}
후기 ¶
- 내용내용 - 조영준
- 자바 신기하고 재밋네요!
c랑 멀어질듯… 1학년인데 ㄷㄷ - 김영현
- 비슷한것도 많으면서 다른것도많고 멘붕x_x 강민승
예정 ¶
- C와 다른 부분들 간락하게 추가 설명
- 클래스와 인스턴스
진행 ¶
- 메모리 구조
- 클래스와 객체
- 살펴본 클래스들 : System, String, Math, Scanner, ...
- 간단하게 클래스 및 객체를 만들어보기
- static? private?
샘플 ¶
public class Main {
public static void main(String[] args) {
TV tv1 = new TV();
tv1.turnOn();
tv1.setChannel(30);
tv1.setVolume(3);
TV tv2 = new TV(5, 10);
tv2.turnOn();
tv2.channelUp();
tv2.channelUp();
tv2.volumeUp();
System.out.println("tv1's channel is " + tv1.getChannel()
+ " and volume level is " + tv1.volumeLevel);
System.out.println("tv2's channel is " + tv2.getChannel()
+ " and volume level is " + tv2.volumeLevel);
}
}
class TV {
private int channel; // Default channel is 1
int volumeLevel; // Default volume level is 1
boolean on; // By default TV is off
public TV() {
channel = 5;
volumeLevel = 3;
on = false;
}
public TV(int newChannel, int newVolume) {
channel = newChannel;
volumeLevel = newVolume;
}
public void turnOn() {
on = true;
}
public void turnOff() {
on = false;
}
public void setChannel(int newChannel) {
if (on && newChannel >= 1 && newChannel <= 120)
channel = newChannel;
}
public void setVolume(int newVolumeLevel) {
if (on && newVolumeLevel >= 1 && newVolumeLevel <= 7)
volumeLevel = newVolumeLevel;
}
public void channelUp() {
if (on && channel < 120)
channel++;
}
public void channelDown() {
if (on && channel > 1)
channel--;
}
public void volumeUp() {
if (on && volumeLevel < 7)
volumeLevel++;
}
public void volumeDown() {
if (on && volumeLevel > 1)
volumeLevel--;
}
public int getChannel() {
return channel;
}
}
미니 프로젝트 ¶
- '난 정말 JAVA를 공부한 적이 없다구요' 기반
1단계 ¶
- PhoneInfo Class 정의하기
- 필요한 Field
- 이름 / name / String
- 전화번호 / phoneNumber / String
- 생년월일 / birthday / String
- 필요한 method
- 연락처 정보 출력 / showPhoneInfo() / void
- 단 생년월일 정보는 저장을 할 수도, 저장하지 않을 수도 있게끔 생성자를 정의
- 정의된 클래스의 확인을 위한 main 메소드도 간단히 정의
2단계 ¶
- 사용자로부터 데이터 입력받기
- 다음과 같은 과정이 반복적으로 이루어 져야 함
- 프로그램을 계속 실행할 것인지 종료할 것인지 확인
- 키보드로부터 데이터 입력
- 입력 받은 데이터로 PhoneInfo의 인스턴스 생성
- 생성된 인스턴스의 showPhoneInfo() 메소드 호출
3단계 ¶
- 배열을 이용해서 사용자가 입력하는 정보가 최대 100개까지 유지되도록 프로그램을 변경.
- 다음과 같은 기능을 수행하는 클래스(PhoneBookManager)를 만들어야 함:
- field
- method (기능)
- 새로운 연락처 저장하기
- 이름으로 데이터 검색하고 정보 출력하기
- 이름으로 데이터 검색하고 그 데이터 삭제하기
- 만약 배열의 0 ~ 10번 인덱스에 연락처 정보가 있는데 3번 인덱스의 자료를 지울 경우, 4 ~ 10번 인덱스의 자료를 한 칸씩 앞으로 이동시켜 결과적으로 0 ~ 9번 인덱스에 연락처 정보가 있도록 해야 함.
- 다음과 같은 과정이 반복적으로 이루어 져야 함
- 메뉴 선택 (입력, 검색, 삭제, 종료)
- 메뉴에 맞는 작업 수행
- 뭐지, 왜 여긴 자바지?! ㅋㅋ - 김태진
- 이미 C를 좀 알고 있음 + 자바에 관심있어함 상태라 :Q - 조영준
- 오 자바반이다ㅋㅋ - kero
- 이름도 내용도 강려카다! - 원준연
- JArVAn - 강민승