JAVA

Hagi 2009. 8. 20. 17:44

Inheritance is a mechanism for enhancing existing classes.

상속은 현재의 클래스를 강화하기 위한 이론이다.

If you need to implement a new class and a class representing a more general concept is already available, then the new class can inherit from the existing class.

만약 당신이 새로운 클래스를 만들어 실행해야하고, 일반적인 개념의 클래스가 이미 존재한다면, 그러면 새로운 클래스는 이미 있는 것을 상속 받을 수 있다.

For example, suppose you need to define a class the SavingAccount to model an account that pays a fixed interest rate on deposits.

예를 들어, 고정 이자율의 저축 계좌 모델을 클래스로 만들어야 한다고 가정해보자.

You already have a class BankAccount, and a savings account is a special case of a bank account.

이미 은행계좌 클래스가 있고, 저축 계좌는 은행 계좌의 한 종류이다.

<중략> (BigJava - Cay Horstmann,p438)

 

이럴때 상속이 가능하다는 뜻...

즉, 스포츠선수가 코치로 부터 상속(재능기부)을 통하여 더 뛰어난 기술을 만드는 것이 그 목적이다.

예) 엽문으로 부터 영춘권을 전수 받은 이소룡은 영춘권의 단점을 가라테, 복싱 등을 통해 보완하여 절권도를 만들었다.  

 

*기계론 [, mechanism]

모든 사상()을 기계적 운동으로 환원해서 설명하려는 입장.

*en·hance

, L높게 하다 에서〕 vt. <·능력 을> 높이다, 강화하다;<가격을> 올리다;(컴퓨터 처리로) <사진의> 질을 높이다

 
 
 

JAVA

Hagi 2009. 8. 20. 17:38

공통점 : 동일한 이름의 메서드

 

*오버로딩(Overloading)

매개 변수의 개수가 다르거나 매개 변수의 자료형이 틀린 동일한이름의 메서드들을 보고 이렇게 되었다고 얘기함

ex) 저그의 오버로드

1. 히드라를 한마리에서 네마리까지 태울 수 있다.

2. 히드라 말고도 드론, 저글링 등을 태울 수 있다.

강사님의 예 ex)

regist(title,content){} => 날짜를 입력하기 귀찮은 사용자는 자동으로 입력

regist(title,content,registDate){} => 날짜 입력을 스스로 함

=> 사용자에게 선택의 기회와 프로그램의 유연성을 제공

 

 

근데 이건 왜 쓰는 것일까 ???

 

*오버라이딩(Overiding)

'오버라이딩' 되었다 = 메서드가 재정의 되었다

ex) 테란 탱크의 시지 모드

class 테란_김정민{

public void 탱크(){

돌아다니 면서 포쏘기;

}

}

class 테란_최연성 extends 테란_김정민{

public void 탱크(){

super.탱크(); // 돌아다니 면서 포쏘기;

시지모드;

}

}

 => 새로운 기능 추가 가능(위의 예)

     필요없어진 기능 삭제 가능(히드라가 럴커로 변신했을 때, 공중유닛 공격 기능이 없어지고 육상유닛 공격을 강화함)

 
 
 

JAVA

Hagi 2009. 8. 20. 16:48

 

인터페이스(Interface)는

흐름만 알고자 할때 또는 생각만 전하고자 할때 쓰인다.

공급자 측면에서는 명세서, 사용자 측면에서는 자격조건 검사 ...

한마디로 말하자면, 설계도이다. (박강사님왈)

 

예를 들어서...

 

package kr.co.bit.lecture.game;

public interface MoraGame {
 // 1. 안내 메시지 출력 -> public void printHelp();
 // 2. 컴퓨터 선택 저장 -> public void generateComputerChoice();
 // 3. 사용자 선택 입력 -> public void getUserChoice();
 // 4. 비교 ->                  public void compare();
 // 5. 결과 출력 ->           public void printResult();
}

 

홀짝 게임을 이렇게 설계해 놓고...

 

다른 곳에서 받아서 코딩한다.

 

(추가 2009-09-13)

interface와 추상클래스를 쓰는 이유는?

두 개 이상의 조합간의 약속일때 쓴다...

public class BoardDaoJDBC implements BoardDao {
      private JDBCConfig config;
      private JDBCTemplate template;
 
      public BoardDaoJDBC(){
             this.config = new JDBCConfig();
             this.template = new JDBCTemplate(config);
     }
      public void insertBoard(BoardVO board) {
              BoardInsertDelegate delegate = new BoardInsertDelegate(board);

 //Insert의 Query를 날릴때, UpdateDelegate(인터페이스)에서 형식을 정해 놓고 BoardInsertDelegate 클래스에서 구현한다.

//이렇게 하면 다음번에 sql만 변할 때, 변경에 유리하다( 유지보수 )  ... <첨부파일 참고>
               try {
                      this.template.executeUpdate(delegate);
               } catch (DataAccessException e) {
                      e.printStackTrace();
               }
      }

}

 

 

BoardDao.java

 

BoardDaoJDBC.java

 

BoardInsertDelegate.java

 

BoardVO.java

 

JDBCConfig.java

 

JDBCTemplate.java

 

QueryDelegate.java

 

UpdateDelegate.java

 

DataAccessException.java

더 자세한 설명은...

http://blog.naver.com/wsdcaptain?Redirect=Log&logNo=40065181359

 

인스턴스(Instance)

 

일단 이것에 관한 자료가 많지 않아서 3분의 의견을 올려본다. 아직 정확하게 의미가 파악되지 않는다.

 

1. 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을 정의하고 그 다음에 ‘본인 목록(my list)’이라는 객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 합니다.

 

2. 프로그래밍에서 인스턴스라고 하면 객체와 동일한 것이라 생각하시면 됩니다.

일반적인 변수와 비슷한 개념인데, 클래스로 만든 변수를 인스턴스 또는 객체라고 합니다.

 

3. 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을 정의하고 그 다음에 ‘본인 목록(my list)’이라는 객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 합니다.

 

http://ask.nate.com/qna/view.html?n=9082995 에서 가져 옴