중간고사
시험범위: 처음부터 – 배운데까지
일시: 2016년 10월 27일 (목) 1:30 – 3:30
장소: 2공학관 105호
Just another Kyoung Shin Park’s Lectures Sites site
중간고사
시험범위: 처음부터 – 배운데까지
일시: 2016년 10월 27일 (목) 1:30 – 3:30
장소: 2공학관 105호
http://www.programmerinterview.com/index.php/java-questions/method-overriding-vs-overloading/
Method Overloading: 동일한 함수명에 매개변수가 다른 함수를 둘 이상 정의하는 것으로, 동일한 함수 기능을 수행하지만 다른 매개변수의 경우를 처리할 때 사용
//compiler error – can’t overload based on the
//type returned (one method returns int, the other returns a float):
//int changeDate(int Year) ;
//float changeDate (int Year);
//compiler error – can’t overload by changing just
//the name of the parameter (from Year to Month):
//int changeDate(int Year);
//int changeDate(int Month) ;
//valid case of overloading,
//since the methods have different number of parameters:
int changeDate(int Year, int Month) ;
int changeDate(int Year);
//also a valid case of overloading,
//since the parameters are of different types:
int changeDate(float Year) ;
int changeDate(int Year);
Method Overriding: 상속받은 파생 클래스에서 동일한 함수명에 동일한 매개변수로 정의하여 함수를 재정의하는 것으로 상속되어진 함수의 기능을 변경해서 재사용하고 싶을 때 사용
public class Parent {
public int someMethod() {
return 3;
}
}
public class Child extends Parent{
// this is method overriding:
public int someMethod() {
return 4;
}
}
protected constructor는 추상클래스 (abstract class)에서 사용을 권고함. 추상 클래스를 상속받는 파생클래스에서 파생 클래스 생성자가 부모 클래스 즉, 추상 클래스를 초기화 하기 위해 추상 클래스 생성자를 호출 할 수 있도록 지원함.
public abstract class Shape
{
public Triangle(String name) { super(name); this.bottom = 1; this.height = 1; }
public Rectangle(String name) { super(name); this.width = 2; this.height = 3; }
private constructor는 정적 메소드와 속성 (static method & property)만 있는 경우 사용함.
} // Output: New count: 101
단국대학교 응용컴퓨터공학전공 JAVA프로그래밍1 (2016년 가을학기) 실습
과목코드 : 514760-1
날짜: 2016년 10월 6일
– 실습번호 : HW2 (Due by 10/20)
– 실습제목 : class, abstract class, inheritance, set/get, ArrayList
– 실습요약 : 입체 도형의 겉넓이(surface area)와 부피(volume) 구하기 & 평면 도형의 넓이(area) 구하기
– 준비자료 : HW1
http://www.mathsisfun.com/area-calculation-tool.html
http://math.about.com/od/formulas/ss/surfaceareavol.htm
10/20까지 online.dankook.ac.kr 이러닝으로 source code(*.java), binary code(*.class), 보고서(12-font 2~3 page)를 학번_이름_Ex2.zip으로 묶어서 이러닝에 제출한다. 보고서 (30%)
– 실습문제
0. GeometryType과 FigureType을 아래와 같이 정의한다.
enum GeometryType { SPHERE(1), CONE(2), CYLINDER(3), RECTANGULAR_PRISM(4), SQUARE_PYRAMID(5), ISOSCELES_TRIANGULAR_PRISM(6) }
enum FigureType { TRIANGLE(1), SQUARE(2), RECTANGLE(3), PARALLELOGRAM(4), RHOMBUS(5), TRAPEZOID(6) }
1. Geometry와 Figure 추상클래스는 아래와 같이 정의한다.
public abstract class Geometry {
public abstract GeometryType getType(); // 도형타입 (GeometryType)
public abstract double getSurfaceArea(); // 겉넓이
public abstract double getVolume(); // 부피
public abstract void getAdditionalUserInput(); // 추가적인 사용자 입력
public void printInfo() {
System.out.println(toString() + “ S.A.=” + getSurfaceArea() + “ Vol=” + getVolume());
}
public abstract class Figure {
public abstract FigureType getType(); // 도형타입 (FigureType)
public abstract double getArea(); // 넓이
public abstract void getAdditionalUserInput(); // 추가적인 사용자 입력
public void printInfo() {
System.out.println(toString() + “Area=” + getArea());
}
2. Geometry 추상클래스를 상속받은 Sphere, Cone, Cylinder, … 는 겉넓이(Surface Area), 부피(Volume)를 계산하여 출력한다. 그리고 Figure 추상클래스를 상속받은 Triangle, Square, Rectangle, … 등 클래스는 넓이(Area)를 계산하여 출력한다.
3. GeometryFactory 클래스와 FigureFactory 클래스는 사용자가 입력한 도형타입에 따라 원하는 실제 클래스 (즉, Sphere, Cone, … 그리고 Triangle, Square,.. 등등) 객체를 생성하여 계산한다. 이 클래스는 다음의 메소드 (Method)만을 갖는다.
+public static Geometry getInstance(GeometryType type)
+public static Figure getInstance(FigureType type)
4. GeometryCalculator 클래스와 FigureCalculator 클래스는 계산 메소드를 갖는다
+ public static void calculateAll() // ArrayList에 Geometry/Figure 객체를 생성하여 넣고, 각각의 SurfaceArea&Volume/Area계산한다.
+ public static void calculateByUserInput() // 사용자 입력으로 원하는 Geometry /Figure객체를 생성하여 SurfaceArea&Volume/Area를 계산하고, ArrayList에 저장해 두었다가 프로그램을 종료할 시 전체 리스트를 출력한다.
5. Utility 클래스에서는 각종 유틸리티 메소드를 갖는다.
+public static GeometryType getUserGeometry()
+public static FigureType getUserFigure()
+public static double getUserInputDouble()
+public static int getUserInputBetween(int min, int max)
+public static boolean getUserExitKey()
6. GeoFigCalculator 클래스에서는 사용자의 입력에 따라 GeometryCalculator와 FigureCalculator를 이용하여 계산한 모든 결과를 출력한다.
7. 사용자의 잘못된 입력에 따른 처리를 반드시 포함해야 하며, 그 외에 본인이 더 테스트해보고 싶은 method나 routine을 추가하라. 실행 화면과 코드를 첨부하시오.
BankAccount – instance vs static member field & method
CarSedan – public vs protected vs private
PersonStudent – method overriding
ShapePolymorphism – abstract class & method
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
Modifier | Class | Package | Subclass | World |
---|---|---|---|---|
public |
Y | Y | Y | Y |
protected |
Y | Y | Y | N |
no modifier | Y | Y | N | N |
private |
Y | N | N | N |
Polymorphism (via overriding)
http://stackoverflow.com/questions/154577/polymorphism-vs-overriding-vs-overloading
Lecture5