More actions
imported>jereneal20 No edit summary |
(Repair batch-0005 pages from live compare) |
||
| (40 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
== 참여자 == | |||
* [[조영준]], [[강민승]], | * [[조영준]], [[강민승]], 김영현, 김윤성, 김준완 | ||
== 진행 == | |||
* '''JAVA'''합니다 JAVA. | * '''JAVA'''합니다 JAVA. | ||
* 목요일 오후 2시 6층 | * 목요일 오후 2시 30분 6층 학회실 | ||
* 준비물: 몸, 멘탈, 노트북은 있으면 좋음. | |||
* 수업 - 실습을 번갈아 가면서 할 예정이나, 2시간으로 되려나...? | |||
== 수업 일지 == | |||
=== 3월 13일 === | |||
* 참가자: 조영준, 강민승, 김영현, 김윤성 | * 참가자: 조영준, 강민승, 김영현, 김윤성 | ||
* 첫 번째 미팅! | * 첫 번째 미팅! | ||
** 시간과 장소를 정하고 - 목요일 2시 6P | ** 시간과 장소를 정하고 - 목요일 2시 6P | ||
** 주제를 정하고 - JAVA! | ** 주제를 정하고 - JAVA! | ||
** 이름을 정하고 - 자르반! | |||
** 아이스크림을 먹었습니다. | ** 아이스크림을 먹었습니다. | ||
=== 3월 20일 === | |||
==== 진행 ==== | |||
* 이론 | |||
** 우리의 목표 / 원하는 것 생각하기 | |||
** 위키 사용법 안내 | |||
** 자바가 돌아가는 방법 ~~및 자바 자랑~~ | |||
** 자바 개발 환경 구축 | |||
** http://www.oracle.com/technetwork/java/javase/downloads/index.html (jdk1.8) | |||
*** java / javac 이용 | |||
** http://www.eclipse.org/downloads/ (Eclipse Standard) | |||
*** eclipse 사용 방법 안내 | |||
* 실습 - 일단 무작정 짜보기 | |||
** 짜다 보면 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 [[강민승]] | |||
=== 3월 27일 === | |||
==== 예정 ==== | |||
* 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; | |||
} | |||
} | |||
==== 후기 ==== | |||
* | |||
=== 4월 3일 === | |||
==== 미니 프로젝트 ==== | |||
* '난 정말 JAVA를 공부한 적이 없다구요' 기반 | |||
===== 1단계 ===== | |||
* PhoneInfo Class 정의하기 | |||
** 필요한 Field | |||
** 이름 / name / String | |||
** 전화번호 / phoneNumber / String | |||
** 생년월일 / birthday / String | |||
** 필요한 method | |||
** 연락처 정보 출력 / showPhoneInfo() / void | |||
** 단 생년월일 정보는 저장을 할 수도, 저장하지 않을 수도 있게끔 생성자를 정의 | |||
** 정의된 클래스의 확인을 위한 main 메소드도 간단히 정의 | |||
===== 2단계 ===== | |||
* 사용자로부터 데이터 입력받기 | |||
* 다음과 같은 과정이 반복적으로 이루어 져야 함 | |||
** 프로그램을 계속 실행할 것인지 종료할 것인지 확인 | |||
** 키보드로부터 데이터 입력 | |||
** 입력 받은 데이터로 PhoneInfo의 인스턴스 생성 | |||
** 생성된 인스턴스의 showPhoneInfo() 메소드 호출 | |||
===== 3단계 ===== | |||
* 배열을 이용해서 사용자가 입력하는 정보가 최대 100개까지 유지되도록 프로그램을 변경. | |||
* 다음과 같은 기능을 수행하는 클래스(PhoneBookManager)를 만들어야 함: | |||
** field | |||
** PhoneInfo[] infoStorage | |||
** method (기능) | |||
** 새로운 연락처 저장하기 | |||
*** 단, 동명이인이 있으면 안 됨. | |||
** 이름으로 데이터 검색하고 정보 출력하기 | |||
** 이름으로 데이터 검색하고 그 데이터 삭제하기 | |||
*** 만약 배열의 0 ~ 10번 인덱스에 연락처 정보가 있는데 3번 인덱스의 자료를 지울 경우, 4 ~ 10번 인덱스의 자료를 한 칸씩 앞으로 이동시켜 결과적으로 0 ~ 9번 인덱스에 연락처 정보가 있도록 해야 함. | |||
* 다음과 같은 과정이 반복적으로 이루어 져야 함 | |||
** 메뉴 선택 (입력, 검색, 삭제, 종료) | |||
** 메뉴에 맞는 작업 수행 | |||
=== 4월 10일 === | |||
* 훑고 지나갔던 배열에 대해서 다시 살펴보기 | |||
* JAVADOC 존재 및 읽는 방법 소개 | |||
** http://docs.oracle.com/javase/7/docs/api/ | |||
=== 5월 8일 === | |||
==== 진행 ==== | |||
* 주제: 상속 [[User:Maintenance script|Maintenance script]] ([[User talk:Maintenance script|talk]])I'm your father[[User:Maintenance script|Maintenance script]] ([[User talk:Maintenance script|talk]]) | |||
** 왜 쓰는가 - 재활용? 구성! | |||
** 어떻게 쓰는가 - 문법 살펴보기 | |||
** 어떻게 돌아가는가 - 예제 코드를 보며 | |||
** 접근지시제어자 다시 보기 - public? private? protected? | |||
** 사실은 모든 class는 무언가를 상속받고 있다! - Object | |||
** Overloading 아니고 OverRiding - Object의 toString | |||
** 사람은 동물이지만 동물은 사람이 아닙니다. - 상속의 관계 | |||
==== 실습 코드 ==== | |||
public class Man { | |||
private String name; | |||
private int age; | |||
public Man(String name, int age) { | |||
this.name = name; | |||
setAge(age); | |||
} | |||
public void tellYourInfo() { | |||
System.out.println("My name is " + name); | |||
System.out.println("Age is " + age); | |||
} | |||
public void setAge(int newAge) { | |||
if (newAge < 0) { | |||
newAge = 0; | |||
} | |||
age = newAge; | |||
} | |||
public String toString() { | |||
return name + ", " + age + "세"; | |||
} | |||
} | |||
public class BusinessMan extends Man { | |||
private String company; | |||
private String position; | |||
public BusinessMan(String name, int age, String company, String position) { | |||
super(name, age); | |||
this.company = company; | |||
this.position = position; | |||
} | |||
public void tellYourInfo() { | |||
super.tellYourInfo(); | |||
tellYourBusiness(); | |||
} | |||
public void tellYourBusiness() { | |||
System.out.println("My company is " + company); | |||
System.out.println("My position is " + position); | |||
} | |||
public void business() { | |||
System.out.println("안녕하세요?"); | |||
} | |||
public String toString() { | |||
return super.toString() + " / " + company; | |||
} | |||
} | |||
class Main { | |||
public static void main(String[] args) { | |||
Man[] people = {new Man("사람", -4), new Man("사람1", 5), | |||
new Man("사람2", 5), new BusinessMan("비지니스맨", 10, "중앙대", "잉여")}; | |||
for (int i = 0; i < people.length; i++) { | |||
System.out.println(people[i]); | |||
people[i].tellYourInfo(); | |||
} | |||
((BusinessMan) people[3]).business(); | |||
} | |||
} | |||
=== 5월 22일 === | |||
==== 프로젝트 진행 ==== | |||
===== 4단계 ===== | |||
* 이전에 만든 class 에서 birthday field와 관련 메서드 제거/변경 | |||
class PhoneInfo | |||
{ | |||
String name; | |||
String phoneNumber; | |||
String birthday; | |||
... | |||
* PhoneInfo를 상속받는 PhoneUnivInfo, PhoneCompanyInfo class 추가 | |||
** PhoneUnivInfo의 field: name, phoneNumber, major, year | |||
** PhoneCompanyInfo의 field: name, phoneNumber, company | |||
* 해당 class들을 이용하도록 Manager class를 수정 | |||
** 데이터 입력 진입시 어느 데이터를 입력할 것인지 (일반/대학/회사) 사용자에게 물어봄 | |||
** 데이터 조회시 이름과 번호 뿐만이 아니라 관련 정보도 모두 출력 | |||
** searchData와 deleteData method는 수정이 없는 것이 정상. | |||
=== 9월 14일 === | |||
* 복습 | |||
=== 9월 24일 === | |||
* exception handling | |||
=== 10월 1일 === | |||
* interface, abstract | |||
=== 10월 29일 === | |||
* 실습 | |||
==== 개요 ==== | |||
class Point implements Comparable<Point> | |||
Point(double x, double y) { this.x = x; this.y = y;} | |||
double x; | |||
double y; | |||
int compareTo(Object); | |||
String toString(); -> "(x, y)"꼴로 리턴 | |||
class Graph | |||
Point[] points = new Point[100]; | |||
void addPoint(Point); | |||
void printAll(); -> 모든 점 위치 출력 | |||
double getLength(); | |||
class Main | |||
1. | |||
import java.util.Random | |||
Random random = new Random(); | |||
random.nextDouble() (0~1사이의 실수) 을 이용, | |||
임의의 점 10개(좌표는 0~ 10)를 생성하고 | |||
printAll과 getLength 결과 출력 | |||
2. | |||
Math.sin(double)을 통해 0도, 5도, 10도, ... , 180도의 점을 추가, | |||
printAll과 getLength 결과 출력 | |||
(주의) 입력받는 값은 radian값이므로 Math.PI를 이용 | |||
90 / 180 * Math.PI = 90도 | |||
(hint) | |||
Math.pow(4, 0.5) => 2 | |||
Math.pow(3, 4) => 81 | |||
Arrays.sort(Obejct[]) | |||
for (Class objectName : arrayName) { | |||
} | |||
==== 조 1 ==== | |||
package assignment; | |||
import java.util.Random; | |||
public class Main { | |||
public static void main(String[] args) { | |||
makePoints(); | |||
System.out.println("--------------------------------------------------------"); | |||
getCircleLength(); | |||
} | |||
public static void makePoints() { | |||
Random random = new Random(); | |||
Graph graph = new Graph(); | |||
for(int i = 0 ; i < 10 ; i ++ ) { | |||
graph.addPoint(new Point(10.0 * random.nextDouble(), 10.0 * random.nextDouble())); | |||
} | |||
System.out.println(graph.getLength()); | |||
graph.printAll(); | |||
} | |||
public static void getCircleLength() { | |||
Graph circleGraph = new Graph(181); | |||
for( int i = 0 ; i < 181 ; i ++) { | |||
Point graphPoint = new Point(Math.cos((double) i / 180.0 * Math.PI), Math.sin((double) i / 180.0 * Math.PI)); | |||
circleGraph.addPoint(graphPoint); | |||
} | |||
System.out.println(circleGraph.getLength()); | |||
circleGraph.printAll(); | |||
} | |||
} | |||
package assignment; | |||
class Point implements Comparable<Point> { | |||
private double x; | |||
private double y; | |||
public Point () { | |||
this.x = 0; | |||
this.y = 0; | |||
} | |||
public double getX() { | |||
return x; | |||
} | |||
public double getY() { | |||
return y; | |||
} | |||
public Point (double x, double y) { | |||
this.x = x; | |||
this.y = y; | |||
} | |||
public String toString() { | |||
return ("(" + x + ", " + y + ")" ) ; | |||
} | |||
@Override | |||
public int compareTo(Point arg0) { | |||
if(x > arg0.x) | |||
return 1; | |||
else if (x == arg0.x) | |||
return 0; | |||
else | |||
return -1; | |||
} | |||
} | |||
package assignment; | |||
import java.util.Arrays; | |||
public class Graph { | |||
private int end = 0; | |||
private double length = 0.0; | |||
public Point[] points; | |||
public Graph () { | |||
this(100); | |||
} | |||
public Graph (int leng) { | |||
points = new Point[leng]; | |||
} | |||
public void addPoint(Point p) | |||
{ | |||
points[end] = new Point(p.getX(),p.getY()); | |||
end++; | |||
} | |||
public void printAll() { | |||
for(int i = 0 ; i < end ; i++) { | |||
System.out.println(points[i]); | |||
} | |||
} | |||
public double getLength() { | |||
Arrays.sort(points, 0, end); | |||
for (int i = 1 ; i < end ; i++) { | |||
length += Math.sqrt(Math.pow((points[i].getY() - points[i-1].getY()), 2) + Math.pow((points[i].getX() - points[i-1].getX()), 2)); | |||
} | |||
return length; | |||
} | |||
} | |||
=== 11월 5일 === | |||
* generic | |||
package practice; | |||
import java.util.ArrayList; | |||
import java.util.Random; | |||
public class Main { | |||
public static void main(String[] args) { | |||
ArrayList<Integer> list = new ArrayList<Integer>(); | |||
Random mola = new Random(); | |||
int i; | |||
for(i=0;i<1000;i++) | |||
list.add(i); | |||
list.remove(945); | |||
for(i=0;i<list.size();i++){ | |||
System.out.println(list.get(i)); | |||
} | |||
} | |||
} | |||
package practice; | |||
public class MyStack<T> { | |||
private int index; | |||
private Object[] stack; | |||
public MyStack() | |||
{ | |||
index = 0; | |||
stack = new Object[100]; | |||
} | |||
public void push(T o) | |||
{ | |||
stack[index] = o; | |||
index++; | |||
} | |||
public T pop() | |||
{ | |||
index--; | |||
return (T)stack[index]; | |||
} | |||
} | |||
package practice; | |||
public class Person { | |||
public String name; | |||
public int age; | |||
public Person(int a, String b) | |||
{ | |||
name = b; | |||
age = a; | |||
} | |||
public String toString(){ | |||
return "이름은"+name+"나이는"+age; | |||
} | |||
} | |||
---- | ---- | ||
* 뭐지, 왜 여긴 자바지?! ㅋㅋ - [[김태진]] | * 뭐지, 왜 여긴 자바지?! ㅋㅋ - [[김태진]] | ||
** 이미 C를 좀 알고 있음 + 자바에 관심있어함 상태라 :Q - [[조영준]] | |||
* 오 자바반이다ㅋㅋ - [kero] | |||
* 이름도 내용도 강려카다! - [[원준연]] | |||
* JArVAn - [[강민승]] | |||
* 나도 무언가를 했다 - 김준완 | |||
Latest revision as of 00:45, 27 March 2026
참여자
진행
- JAVA합니다 JAVA.
- 목요일 오후 2시 30분 6층 학회실
- 준비물: 몸, 멘탈, 노트북은 있으면 좋음.
- 수업 - 실습을 번갈아 가면서 할 예정이나, 2시간으로 되려나...?
수업 일지
3월 13일
- 참가자: 조영준, 강민승, 김영현, 김윤성
- 첫 번째 미팅!
- 시간과 장소를 정하고 - 목요일 2시 6P
- 주제를 정하고 - JAVA!
- 이름을 정하고 - 자르반!
- 아이스크림을 먹었습니다.
3월 20일
진행
- 이론
- 우리의 목표 / 원하는 것 생각하기
- 위키 사용법 안내
- 자바가 돌아가는 방법 ~~및 자바 자랑~~
- 자바 개발 환경 구축
- http://www.oracle.com/technetwork/java/javase/downloads/index.html (jdk1.8)
- java / javac 이용
- http://www.eclipse.org/downloads/ (Eclipse Standard)
- eclipse 사용 방법 안내
- 실습 - 일단 무작정 짜보기
- 짜다 보면 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 강민승
3월 27일
예정
- 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;
}
}
후기
*
4월 3일
미니 프로젝트
- '난 정말 JAVA를 공부한 적이 없다구요' 기반
1단계
- PhoneInfo Class 정의하기
- 필요한 Field
- 이름 / name / String
- 전화번호 / phoneNumber / String
- 생년월일 / birthday / String
- 필요한 method
- 연락처 정보 출력 / showPhoneInfo() / void
- 단 생년월일 정보는 저장을 할 수도, 저장하지 않을 수도 있게끔 생성자를 정의
- 정의된 클래스의 확인을 위한 main 메소드도 간단히 정의
2단계
- 사용자로부터 데이터 입력받기
- 다음과 같은 과정이 반복적으로 이루어 져야 함
- 프로그램을 계속 실행할 것인지 종료할 것인지 확인
- 키보드로부터 데이터 입력
- 입력 받은 데이터로 PhoneInfo의 인스턴스 생성
- 생성된 인스턴스의 showPhoneInfo() 메소드 호출
3단계
- 배열을 이용해서 사용자가 입력하는 정보가 최대 100개까지 유지되도록 프로그램을 변경.
- 다음과 같은 기능을 수행하는 클래스(PhoneBookManager)를 만들어야 함:
- field
- PhoneInfo[] infoStorage
- method (기능)
- 새로운 연락처 저장하기
- 단, 동명이인이 있으면 안 됨.
- 이름으로 데이터 검색하고 정보 출력하기
- 이름으로 데이터 검색하고 그 데이터 삭제하기
- 만약 배열의 0 ~ 10번 인덱스에 연락처 정보가 있는데 3번 인덱스의 자료를 지울 경우, 4 ~ 10번 인덱스의 자료를 한 칸씩 앞으로 이동시켜 결과적으로 0 ~ 9번 인덱스에 연락처 정보가 있도록 해야 함.
- 다음과 같은 과정이 반복적으로 이루어 져야 함
- 메뉴 선택 (입력, 검색, 삭제, 종료)
- 메뉴에 맞는 작업 수행
4월 10일
- 훑고 지나갔던 배열에 대해서 다시 살펴보기
- JAVADOC 존재 및 읽는 방법 소개
5월 8일
진행
- 주제: 상속 Maintenance script (talk)I'm your fatherMaintenance script (talk)
- 왜 쓰는가 - 재활용? 구성!
- 어떻게 쓰는가 - 문법 살펴보기
- 어떻게 돌아가는가 - 예제 코드를 보며
- 접근지시제어자 다시 보기 - public? private? protected?
- 사실은 모든 class는 무언가를 상속받고 있다! - Object
- Overloading 아니고 OverRiding - Object의 toString
- 사람은 동물이지만 동물은 사람이 아닙니다. - 상속의 관계
실습 코드
public class Man {
private String name;
private int age;
public Man(String name, int age) {
this.name = name;
setAge(age);
}
public void tellYourInfo() {
System.out.println("My name is " + name);
System.out.println("Age is " + age);
}
public void setAge(int newAge) {
if (newAge < 0) {
newAge = 0;
}
age = newAge;
}
public String toString() {
return name + ", " + age + "세";
}
}
public class BusinessMan extends Man {
private String company;
private String position;
public BusinessMan(String name, int age, String company, String position) {
super(name, age);
this.company = company;
this.position = position;
}
public void tellYourInfo() {
super.tellYourInfo();
tellYourBusiness();
}
public void tellYourBusiness() {
System.out.println("My company is " + company);
System.out.println("My position is " + position);
}
public void business() {
System.out.println("안녕하세요?");
}
public String toString() {
return super.toString() + " / " + company;
}
}
class Main {
public static void main(String[] args) {
Man[] people = {new Man("사람", -4), new Man("사람1", 5),
new Man("사람2", 5), new BusinessMan("비지니스맨", 10, "중앙대", "잉여")};
for (int i = 0; i < people.length; i++) {
System.out.println(people[i]);
people[i].tellYourInfo();
}
((BusinessMan) people[3]).business();
}
}
5월 22일
프로젝트 진행
4단계
- 이전에 만든 class 에서 birthday field와 관련 메서드 제거/변경
class PhoneInfo
{
String name;
String phoneNumber;
String birthday;
...
- PhoneInfo를 상속받는 PhoneUnivInfo, PhoneCompanyInfo class 추가
- PhoneUnivInfo의 field: name, phoneNumber, major, year
- PhoneCompanyInfo의 field: name, phoneNumber, company
- 해당 class들을 이용하도록 Manager class를 수정
- 데이터 입력 진입시 어느 데이터를 입력할 것인지 (일반/대학/회사) 사용자에게 물어봄
- 데이터 조회시 이름과 번호 뿐만이 아니라 관련 정보도 모두 출력
- searchData와 deleteData method는 수정이 없는 것이 정상.
9월 14일
- 복습
9월 24일
- exception handling
10월 1일
- interface, abstract
10월 29일
- 실습
개요
class Point implements Comparable<Point>
Point(double x, double y) { this.x = x; this.y = y;}
double x;
double y;
int compareTo(Object);
String toString(); -> "(x, y)"꼴로 리턴
class Graph
Point[] points = new Point[100];
void addPoint(Point);
void printAll(); -> 모든 점 위치 출력
double getLength();
class Main
1.
import java.util.Random
Random random = new Random();
random.nextDouble() (0~1사이의 실수) 을 이용,
임의의 점 10개(좌표는 0~ 10)를 생성하고
printAll과 getLength 결과 출력
2.
Math.sin(double)을 통해 0도, 5도, 10도, ... , 180도의 점을 추가,
printAll과 getLength 결과 출력
(주의) 입력받는 값은 radian값이므로 Math.PI를 이용
90 / 180 * Math.PI = 90도
(hint)
Math.pow(4, 0.5) => 2
Math.pow(3, 4) => 81
Arrays.sort(Obejct[])
for (Class objectName : arrayName) {
}
조 1
package assignment;
import java.util.Random;
public class Main {
public static void main(String[] args) {
makePoints();
System.out.println("--------------------------------------------------------");
getCircleLength();
}
public static void makePoints() {
Random random = new Random();
Graph graph = new Graph();
for(int i = 0 ; i < 10 ; i ++ ) {
graph.addPoint(new Point(10.0 * random.nextDouble(), 10.0 * random.nextDouble()));
}
System.out.println(graph.getLength());
graph.printAll();
}
public static void getCircleLength() {
Graph circleGraph = new Graph(181);
for( int i = 0 ; i < 181 ; i ++) {
Point graphPoint = new Point(Math.cos((double) i / 180.0 * Math.PI), Math.sin((double) i / 180.0 * Math.PI));
circleGraph.addPoint(graphPoint);
}
System.out.println(circleGraph.getLength());
circleGraph.printAll();
}
}
package assignment;
class Point implements Comparable<Point> {
private double x;
private double y;
public Point () {
this.x = 0;
this.y = 0;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public Point (double x, double y) {
this.x = x;
this.y = y;
}
public String toString() {
return ("(" + x + ", " + y + ")" ) ;
}
@Override
public int compareTo(Point arg0) {
if(x > arg0.x)
return 1;
else if (x == arg0.x)
return 0;
else
return -1;
}
}
package assignment;
import java.util.Arrays;
public class Graph {
private int end = 0;
private double length = 0.0;
public Point[] points;
public Graph () {
this(100);
}
public Graph (int leng) {
points = new Point[leng];
}
public void addPoint(Point p)
{
points[end] = new Point(p.getX(),p.getY());
end++;
}
public void printAll() {
for(int i = 0 ; i < end ; i++) {
System.out.println(points[i]);
}
}
public double getLength() {
Arrays.sort(points, 0, end);
for (int i = 1 ; i < end ; i++) {
length += Math.sqrt(Math.pow((points[i].getY() - points[i-1].getY()), 2) + Math.pow((points[i].getX() - points[i-1].getX()), 2));
}
return length;
}
}
11월 5일
- generic
package practice;
import java.util.ArrayList;
import java.util.Random;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
Random mola = new Random();
int i;
for(i=0;i<1000;i++)
list.add(i);
list.remove(945);
for(i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
package practice;
public class MyStack<T> {
private int index;
private Object[] stack;
public MyStack()
{
index = 0;
stack = new Object[100];
}
public void push(T o)
{
stack[index] = o;
index++;
}
public T pop()
{
index--;
return (T)stack[index];
}
}
package practice;
public class Person {
public String name;
public int age;
public Person(int a, String b)
{
name = b;
age = a;
}
public String toString(){
return "이름은"+name+"나이는"+age;
}
}