U E D R , A S I H C RSS

Java Study2003/�번째과제/노수민

ToyProblem

~cpp 
public class factorial {
	public int process(int number)	{
		if(number!=1)
			return number*process(number-1);
		else return 1; 
	}
	public void main()	{
		System.out.println(process(7));
	}

}


  • ì›�래 RandomWork ì§œë�˜ê²Œ 있는ë�° eclipseê°€ Runì�´ 안ë�˜ë�”êµ°ìš”;
    그래서 디버그 � 결과 확�불가.;
    Run쪽 옵션� 틀린건가;; 오류가 아니� 메� �래스가 없다는 등� 다양한 메시지가 뜨면서 안�요; 결국 간단한 소스를 올립니다

�체지향 개�


�체란?


  • 세계ì—� 존재하는 것들, ex) 사람, ìž�ë�™ì°¨, 컴퓨터 등..
    다�� � 가지로 나눌 수 있다.
  • ìƒ�태(state) : ê°�ì²´ê°€ 가지고 있는 ì†�성 ë˜�는 특성
  • í–‰ë�™(behavior) : ê°�ì²´ê°€ 가지고 있는 기능 ë˜�는 í•  수 있는 í–‰ë�™
    ex) ��차 - 색, 바퀴, �잡�, 현재 기어위치 등� �태�,
    달린다, 멈ì˜ë‹¤, ì†�ë�„를 높ì�´ê±°ë‚˜ ë‚®ì˜ë‹¤ 등ì�˜ í–‰ë�™ì�„ 한다

�러한 실세계를 소프트웨어�으로 표현하기 위한 방법중 하나가 '�체지향'�다.

  • ê°�ì²´ì�˜ ìƒ�태와 í–‰ë�™ -> 소프트웨어 ê°�ì²´ì�˜ 변수와 메소드
    로 모��한다.
    즉, �태를 나타내는 변수와 그 �태를 변경하는 행�� 메소드로
    실세계� �체를 소프트웨어 �체로 모��하고 구현한다.

�체지향 방법�서 나타나는 몇 가지 특징 <- OOP� 특징


  • 캡ìŠ�í™” : 변수(ìƒ�태)와 메소드(í–‰ë�™)를 하나ì�˜ 묶ì�Œìœ¼ë¡œ 캡ìŠ�화한다.
    �것으로 �해 모듈성과 정보�닉��는 ��� 얻는�,,
    하나� �체� 소스가 다른 소스와 무관하게 유지할 수 있고, � public�나 private 권한� 통해 정보� 대한 접근 정�를 설정할 수 있다.

  • 메시지 : ê°�체는 다른 ê°�ì²´ì—� 메시지를 보내서 통신할 수 있다.
    � 메시지는 메시지를 받� �체, 수행� 요청한 메소드� �름과 그 메소드� 필요한 매개변수� 세 가지 구성요소를 갖는다.

  • í�´ëž˜ìФ : 특정한 종류ì�˜ 모든 ê°�체들ì—� ì �용할 수 있는 변수와 메소드를 ì •ì�˜í•˜ëŠ” '소프트웨어ì �ì�¸ 설계ë�„' ì�´ë‹¤.
    실세계� �체들� �태와 행�들� 소프트웨어�으로 추�화해 놓� 것�다.
    청사진��고 하기� 하고, 벽�� �기 위한 하나� 틀� 비유하기� 한다.

  • ì�¸ìŠ¤í„´ìŠ¤ : í�´ëž˜ìФì—� 대한 변수를 선언하는 것ì�„ 'ì�¸ìŠ¤í„´ìŠ¤ë¥¼ ìƒ�성한다'ê³  하고, ì�´ 변수를 ì�¸ìŠ¤í„´ìŠ¤ë�¼ 한다.
    �스턴스를 �성하는 것� 벽�틀로 벽�� �는다고 할 수있다.

  • ê°�ì²´ : 실세계ì—� ì �ìš© - ìž�ë�™ì°¨(í�´ëž˜ìФ) -> 아반테, 누비ë�¼, 그랜저, í‹°ê³  등 (ê°�ì²´)

  • ìƒ�ì†� : ìž�ë�™ì°¨ í�´ëž˜ìФì—� 버스 í�´ëž˜ìФ, 트럭 í�´ëž˜ìФ, ìž�가용 í�´ëž˜ìŠ¤ê°€ ì†�한다면,
    ��차 �래스는 �위 �래스, 버스,트럭,�가용 �래스를 하위�래스� 하며, �들� 관계�서 "하위�래스는 �위�래스를 ��한다"고 한다.

  • 다형성 : ê°™ì�€ ì�´ë¦„ì�„ 같는 여러 가지 형태가 존재한다는 것
    �바� 메소드(함수) 다중정�, 매소드 재정�가 있다.

�래스 정� � �스턴스(�체) �성


�바 언어는 �체지향 프로그래�� 할 수 있�� 문법� 제공해 준다.

  • í�´ëž˜ìФ ì •ì�˜

~cpp 
class �래스�름 {
   // 변수 선언부
      …
   // 메소드 선언부
      …
}     

  • ì�¸ìŠ¤í„´ìŠ¤ ìƒ�성

  • ~cpp 
     �래스�름 �래스�스턴스�름 = new �래스�름();
    
    �는
    
    �래스�름 �래스�스턴스�름;
    
    �래스�스턴스�름 = new �래스�름();
    

    변수 � 메소드� 접근제어

    • public - ê°™ì�€ í�´ëž˜ìФ, 하위í�´ëž˜ìФ 등 ê°™ì�€ 패키지ì�˜ 모든 í�´ëž˜ìФì—�서 접근가능
    • private - ê°™ì�€í�´ëž˜ìФ ë‚´ì—�서만 접근가능
    • protected - ê°™ì�€ í�´ëž˜ìФ, 하위í�´ëž˜ìФ 등 ê°™ì�€ 패키지ì�˜ 모든 í�´ëž˜ìФì—�서 접근가능
    • ìƒ�ëžµ : ê°™ì�€ í�´ëž˜ìФ ë˜�는 ê°™ì�€ 패키지ì�˜ 모든 í�´ëž˜ìФì—�서 접근가능, 하위í�´ëž˜ìФì—�서 ì ‘ê·¼ 불가능

    메소드� 다중 정�


    • ê°™ì�€ ì�´ë¦„으로 여러 ì�¼ì�„ 하는 것
    • ìž�ë°”ì—�서는 함수 다중 ì •ì�˜ë§Œì�„ 제공함

    �체 �성�와 �체 �성 과정


    �체 �성�


    �바 언어를 �용하여 �체를 �성하고 필요� 따� 값� 초기화 해 주어야 하는 경우
    ê°�ì²´ ìƒ�성ìž�는 new ì—°ì‚°ìž�를 ì�´ìš©í•˜ì—¬ ê°�체를 ìƒ�성할 때ë�„ 호ìœë�œë‹¤.

    • ê°�ì²´ê°€ ìƒ�성ë�  때 ìž�ë�™í˜¸ìœ, ê°�ì²´ì�˜ 변수초기화, 메모리 할당들ì�˜ 작업ì�„ 함
    • new ì—°ì‚°ìž�로 ê°�체를 ìƒ�성할때 호ìœ, 메모리를 할당하고 ê°�ì²´ ìƒ�성ìž� 호ìœ

    ~cpp 
    �래스�름(형�매개변수 리스트) { … }
    
    �래스�름(형�매개변수 리스트) {
    다른 ê°�ì²´ ìƒ�성ìž� 호ìœ;  ß 반드시 첫번째 줄ì—�서  
    �루어져야 함.
     …
    }
    
    �래스�름 변수�름 = new �래스�름(실매개변수 리스트);
    

    ===this===

    * �기 �신� 나타냄
    * 메소드 내�서 변수와 �체� �름� 같� 경우 변수 앞� this를 붙임
    * ê°�ì²´ìƒ�성ìž� ë‚´ì—�서 다른 ìƒ�성ìž� 호ìœ
    ~cpp 
    this
    
    this.멤버변수
    
    this(매개변수);
    

    �랙스멤버와 �스턴스 멤버


    �래스 멤버는 변수와 메소드가 있고,
    �는 �스턴스 변수와 �스턴스 메소드 � �래스 변수와 �래스 메소드로 나뉜다.


    ~cpp 
    �래스 변수와 �래스 메소드� 선언)
    
    [접근권한] static 변수 선언;
    
    [접근권한] static 메소드 선언;
    
    �래스 변수와 �래스 메소드� 접근)
    
    �래스�름.�래스메소드()
    
    �래스메소드()
    
    �체참조값.�래스메소드()
    
    

    �래스 초기화 � �체� �성 과정


    �래스를 처�으로 메모리� �재

    �래스 초기화

    �래스 실행


    ��

    ��, �위�래스, 하위�래스

    위� 있�

    ��과 �성� � �성 과정


    • this : í�´ëž˜ìФ ë‚´ì�˜ ê°�ì²´ ìƒ�성ìž�ì—�서 다른 ê°�ì²´ ìƒ�성ìž�를 호ìœ

  • super : 하위í�´ëž˜ìФì�˜ ê°�ì²´ ìƒ�성ìž�ì—�서 ìƒ�위í�´ëž˜ìФì�˜ ê°�ì²´ ìƒ�성ìž�를 호ìœ

  • ê°�ì²´ ìƒ�성순서
  • new ìƒ�성ìž�를 ì�´ìš©í•˜ì—¬ ê°�체를 위한 메모리 공간ì�„ 할당

  • 모든 ì�¸ìŠ¤í„´ìŠ¤ 변수를 0, '\u0000', false, 그리고 null 등과 ê°™ì�€ ë””í�´íЏ 초기치로 초기화

  • ìƒ�위í�´ëž˜ìФì�˜ ìƒ�성ìž�를 호ìœ

  • 하위í�´ëž˜ìФì—� ì„ ì–¸ë�œ ì�¸ìŠ¤í„´ìŠ¤ 변수 초기ìž� 수ì‹� ë°� ì�¸ìŠ¤í„´ìŠ¤ 초기화 블ë¡�ì�„ 실행

  • 하위í�´ëž˜ìФì�˜ ìƒ�성ìž� 몸체를 실행

  • ìƒ�ì†�ê³¼ ì�¸ìŠ¤í„´ìŠ¤ 메소드ì�˜ 재정ì�˜(Overriding)

    기본�으로 하위�래스는 �위�래스로부터 ���는 �태와 행�들� 가진다.

    �한, 하위�래스는 �신�게 필요한 변수들과 메소드를 추가�으로 정�할 수 있습니다. 그리고, 하위�래스는 �위�래스�서 정�� 메소드와 같� �름, 같� ��들� 갖는 새로운 메소드를 정�하여 �위�래스�서 ���는 메소드를 재정�할 수 잇는�,

    여기서 몇가지 지켜야 할 것� 있다.

    • ì�¸ìŠ¤í„´ìŠ¤ 메소드ì�´ì–´ì•¼ 한다.
    • 메소드ì�˜ ì�´ë¦„ì�´ 같아야 한다.
    • 매개변수ì�˜ 개수가 같아야 한다.
    • 매개변수 ê°�ê°�ì�˜ ìž�료형ì�´ ì�¼ì¹˜í•´ì•¼ 한다.
    • 메소드ì�˜ 리턴형ì�´ ì�¼ì¹˜í•´ì•¼ 한다.

    ��과 변수 � 메소드� 접근제어


    • ì�¸ìŠ¤í„´ìŠ¤ 변수, í�´ëž˜ìФ 변수, 그리고 í�´ëž˜ìФ 메소드는 ì�€ë‹‰ë�  수는 있어ë�„ 재정ì�˜ ë�  수는 없다.

  • private 접근지정ìž�로 ì„ ì–¸ë�œ 변수는 ìƒ�ì†�í•  수 없고, 메소드는 ìƒ�ì†� ë°� 재정ì�˜ í•  수 없다.

  • public ë˜�는 protected ì ‘ê·¼ 지정ìž�로 ì„ ì–¸ë�œ 변수와 메소드는 ìƒ�ì†�í•  수 있고, 메소드ì—� 대해 재정ì�˜ í•  수 있다.


  • ...
    ...
    ...




    OOP


    추가 요구 내용


    • ë‚´ìš©ì�„ 1페ì�´ì§€ ì�´ë‚´ë¡œ 줄어보세요.


    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:23:32
    Processing time 0.0108 sec