달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2010. 12. 11. 23:28

인터페이스 Study/Java2010. 12. 11. 23:28

인터페이스란?

구현 된 것은 아무것도 없는 밑바탕만 있는 "기본 설계도" 라고 생각하면 된다.

인터페이스 작성방법
ex)
interface 인터페이스 이름{
//모든 멤버변수는 public static final 이어야 하고
//모든 메서드는 public abstract 이어야한다.
}
내가 기존에 알고 있던 인터페이스는 C++ 에는 있지만 자바에는 없는 다중 상속을 사용할 때

기존의 다중상속의 장점만을 취해서 하는 것이라고 생각했다.

(※자바의 정석 298page 에 보면 인터페이스가 단순히 다중 상속을 위한 것으로 오해를 사고는 하는데 공부를 하다보면 참된 의미를 알 것이라고 하였다.)

ex)
interface A{
..생략..
}
interface B{
..생략..
}
interface C extends A,B{
..생략..
}

인터페이스의 장점만을 적어보자면 (자바의 정석 page 303)

1. 개발 시간을 단축 : 메서드를 호출 하는 쪽에서는 메서드의 내용에 관계없이 선언부만 알면됨!
2. 표준화가 가능 : 기본틀을 인터페이스로 작성하여 일관화되고 정형화된 개발이 가능
3. 서로 관계없는 클래스들끼리 관계를 맺어 줌 : 하나의 인터페이스를 공통적으로 구현하도록 관계를 맺어줌.
4. 독립적인 프로그래밍 가능 : 선언과 구현을 분리시킬 수 있다.

문제 : (interface를 사용할것!)
온풍기 냉풍기 가 가능한 에어콘이 있다.
on 이라는 명령을 내리고 설정온도를 입력하면 25도 초과일때 Hot mode
25도 미만일때 Cold mode
25도 일때 Air Care mode
로 출력하게 하며
off 일때는 종료가 엉뚱한 명령어가 입력되거나 최대값 30도, 최저값 18도 범위 밖일 경우도 종료시켜라.

음. 내가 만든 문제는 아니고 어디선가 봤던 문제인듯.

(정답을 몰라서 일단 내 코딩을 등록해두고 과감히 평가받기)


import javax.swing.JOptionPane;
interface Airconable{
abstract void mode(int temp);
}

class Aircon{
private int max_temp = 30;
private int min_temp = 18;
void operate(String operate, int temp){
if(operate.equals("on")){
if(control(temp)){
System.out.println("작동중");
}
else{
System.exit(0);
}
}
else if(operate.equals("off")){
System.out.println("정지");
System.exit(0);
}
else{
System.out.println("잘못입력했습니다");
System.exit(0);
}
}
boolean control(int temp){
System.out.println(temp+"도로 설정되었습니다.");
if(temp > max_temp){
System.out.println("온도가 너무 높게 설정되었습니다."+"종료합니다.");
return false;
}
else if(temp<min_temp){
System.out.println("온도가 너무 낮게 설정되었습니다."+"종료합니다.");
return false;
}
else{
return true;
}
}
}

class SelectMode extends Aircon implements Airconable{
SelectMode(String operate, int temp){
super.operate(operate,temp);
mode(temp);
}
@Override
public void mode(int temp) {
if(temp>25){
System.out.println("HOT MODE");
}
else if(temp<25){
System.out.println("COLD MODE");
}
else{
System.out.println("AIR CORE MODE");
}
}
}
public class aircon2 {
public static void main(String args[]){
String oper = "";
String question = "";
int temp = 25;
oper = JOptionPane.showInputDialog("시작:on  ,    종료:off.");
if(oper.equals("on")){
question = JOptionPane.showInputDialog("온도를 입력하세요.");
temp = Integer.parseInt(question);
}
SelectMode sm = new SelectMode(oper, temp);
}
}
:
Posted by 유쾌한순례자