국비지원 복습과정 5차(메서드)

Park In Kwon·2022년 9월 6일
0

1. 값을 반환하는 메서드

1-1 메서드의 리턴값

  • 메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을 "리턴"이라고 하며,
    반환되는 값을 "리턴 값" 이라고 한다.
  • 메서드 안에서 값을 리턴하기 위해서는 "return"이라는 키워드가 사용된다.
  • 값을 리턴하는 메서드는 선언시에 "void" 키워드 대신, 리턴하는 값에 대한 변수형이
    명시된다. void는 리턴 값이 없다는 의미이다.

1-2 메서드간의 상호 호출

  • 메서드 역시 서로 호출하는 것이 가능하다. 호출된 메서드가 값을 리턴하는 경우,
    리턴받은 값을 다른 연산에 사용할 수 있다

2. 객체지향 프로그래밍과 객체

2-1. 객체 (object)

  • 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위

    2-2. 객체지향 프로그래밍

  • 객체가 중심이 되는 프로그래밍 기법

    2-3. 클래스와 객체의 관계

  • 객체를 생성하기 위해서는 객체의 설계도가 필요하다.

2-4. 클래스(=class)

  • 객체의 설계도 역할을 하는 프로그램 소스
  • 공장에서 하나의 설계도를 사용하여 여러 개의 제품을 생산할 수 있는 것처럼
    하나의 클래스를 통해 동일한 구조의 객체를 여러 개 생성 할 수 있다

2-5. 객체를 구성하는 단위

  • 객체를 이루는 것은 데이터와 기능이다.
  • 데이터는 변수로 표현된다.
    (객체 안에 포함된 변수를 '멤버변수' 또는 '프로퍼티'라고 한다.)
  • 기능은 메서드(=함수)로 표현된다.

2-6. 클래스의 기본 작성 방법

 class 클래스이름 {
           멤버변수;

         void 메서드이름( ) {....}

}

  • 'class' 라는 예약어와 클래스의 이름을 명시하고 {...} 블록을 구성한다.
  • 멤버변수는 여러개 존재할 수 있다. 이때, 값을 선언과 동시에 할당할 수도 있고,
    객체를 통해 간접적으로 할당할 수도 있다.
  • 메서드는 여러 개 존재할 수 있다.
  • 클래스안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화 하기 위한 기법이 클래스를
    작성하는 것이라고 이해할 수 있다.

2-7. 객체의 생성 방법

  • 객체의 선언
    클래스 이름 객체 이름;

  • 객체의 할당
    객체 이름 = new 클래스이름( );

  • 선언과 할당의 통합
    클래스이름 객체이름 = new 클래스이름( );

2-8. 객체의 사용

  • 객체 안에 포함된 변수나 메서드는 점 ( . ) 으로 연결하여 접근한다.
    ( std2.name = "오라클학생"; )

  • 객체안에 포함된 변수의 값을 다른 변수에 복사하는 경우

    변수 = 객체이름.멤버변수;

  • 객체안에 포함된 변수의 값에 다른 값을 대입하는 경우

    객체이름.멤버변수 = 값;

  • 객체 안에 포함된 메서드를 호출하는 경우

    객체이름.메서드이름( );

  • 객체 안에 포함된 메서드에 파라미터를 전달하는 경우

    객체이름.메서드이름(값1, 값2, ... );

  • 같은 클래스를 통하여 생성된 객체라 할지라도 서로 다른 값을 대입하면 서로
    독립적인 형태로 존재하게 된다.

  • 값이 대입되지 않은 멤버변수를 갖는 클래스
    -> 클래스란 객체를 위한 틀을 제공하는 것이기 때문에, 클래스 작성과정에서 멤버변수에
    대입된 값은, 객체를 통하여 멤버변수의 값을 지정하기 전까지 사용될 "기본값"으로서의 의미이다.
    -> 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은 의미를
    잃어버리게 된다.
    -> 때문에 일반적으로 클래스 작성시에는 멤버변수에 값을 지정하지 않는다.

2-9. 메서드를 포함하는 클래스

  • 메서드란 프로그램에서 하나의 동작 단위를 의미한다.

  • 두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우,
    이 메서드들을 클래스에 포함시켜 그룹화 할 수 있다.

  • 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.

    변수의 종류 -> 멤버변수(=전역변수)
    : 클래스 안에서 선언된 변수로서, 클래스 불록범위 안에서 유효하다.
    -> 지역변수
    : 메서드 안에서 선언된 변수로서, 메서드의 블록을 빠져나가지 못한다.
    그러므로 다른메서드는 해당 변수를 인식하지 못한다. 이 규칙은 조건, 반복문과 같은 블록 { }을
    형성하는 모든 경우에 해당한다. ex) ( for (int i .... ) i = 지역변수

2-10. 메서드만을 포함하는 클래스

  • 객체 안에 멤버변수(=데이터)가 포함되지 않는다.

  • 객체안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로, 굳이 여러 개의 객체를 생성할 필요가 없다.

    3. this

    3-1. 자기 자신을 의미하는 키워드

  • 클래스 안에서 this 를 사용하여 "자기자신"을 표현한다

    3-2. this를 이용해서 지역변수와 멤버변수 구분하기

    class User {
               String name;    //   name : 전역 변수
    
              public void setName( ) {
                           String name;        // name :  지역 변수
                           name = "사용자";     --> name : 지역변수
                           this.name = "자바학생";  ->> 전역변수
                     }
               }
     //멤버변수 (전역변수)와 지역변수가 동일한 이름으로 공존할 경우, 유효성의 범위가
     //작은 변수가 우선적으로 인식된다.
        
        class Student{
                   String name;       // 전역변수
             
                   public void setName ( String name ) {  
                              this.name = name;         
                   }     
          }
  • 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종이다.

  • 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고 할 경우에는,
    변수의 이름을 서로 다르게 사용하는 것보다는 이름은 동일하게 지정하고
    this 키워드를 사용하여 멤버변수와 파라미터를 구별하는것이 java언어의 일반적인 처리 방식이다.

  • 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이
    소스코드의 가독성을 위해서 바람직하다.

4. 클래스, 메서드 , 상수의 이름 규칙

4-1. 공통 이름 규칙

  • 영어+숫자+언더바 ( _ ) 의 조합이고, 첫 글자는 반드시 영어로 표기한다.

4-2. 클래스 이름 규칙

  • 첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다.
  • 두 개 이상의 단어를 조합해야 할 경우, 새오룬 단어는 대문자로 시작한다. class NewType / class Student

4-3. 메서드, 변수 이름 규칙

  • 대부분 소문자로 구성되지만, 두 개 이상의 단어를 조합할 경우 새로운 단어는 대문자로 표시한다.
    int age; / String userName; / string memberCount;

    동사 + 명사
    getName( )
    setUserName( )

4-4. 상수 이름 규칙

  • 모두 대문자로 표시한다.

    final double PI;
    final int COLOR;

5. 생성자

  • member m1 = new Member( ); >> 생성자

5-1. 생성자란?

  • new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드

  • 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.

      User user = new User( );
    
       class User{
              User( ) {   -> 생성자
                         // 이 안은 객체가 생성될 때 자동으로 호출된다.
             }
      }  
  • 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을 초기화 하기 위하여 사용된다.
    ( ex: 멤버변수의 초기값을 할당하는 용도)

5-2. 기본 생성자

  • 파라미터가 없는 생성자
  • 클래스에 특별히 생성자가 정의되지 않은 경우, Java 컴파일러가 기본 생성자가 존재한다고 인식한다.
       User u = new User ( );    -> 아래의  User ( )      
                           -------    
           class User {
                    User ( ) {  // 생성자는 있지만, 내용은 비어있다.
                }
          } 

    5-3. 파라미터를 갖는 생성자

  • 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능하다.
  • 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인 요인에 의해 처리할 수 있다.
profile
개발자로 진로 변경을 위해 준비하고 있습니다

0개의 댓글