Kim-Baek 개발자 이야기

자바 기본 (9) - 객체와 클래스 본문

개발/java basic

자바 기본 (9) - 객체와 클래스

김백개발자 2020. 9. 30. 02:37
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다

◎ 객체와 클래스
- 객체 (instance) -> 존재하는 것 (유, 무형) - 품사로는 명사
- 클래스 (class) - 너무 범위가 작거나 큰 것은 클래스로 유효하지 않다.
ex) 고객은 이름, 나이, 주소를 갖는다.
                 -> 값 1개 : 클래스로 하기에는 작다
                    * 하지만 이름이 성, 본관, 이름 등 분류되서 사용되는 경우에는 class 가 될 수도 있다.

※ 공통점을 뽑아내는 과정 -> 추상화

 클래스 다이어그램
- 세 칸의 표를 통해서 클래스의 선언을 다이어그램으로 나타낼 수 있다. 맨 위칸에는 클래스의 이름, 두 번째칸에는 클래스의 속성, 세 번째 칸에는 클래스의 동작을 넣는다

[ modifier ] class 이름 { -> 선언부
    속성, 동작
} -> 구현부

ex) public class 약품 {
    변수
}

※ class 선언 앞에 있는 것은 모두 제한자이다. 제한자끼리는 한칸을 띄워서 구분한다.
ex) public final class Customer{  }

 UML (Unified Modeling Language) 
-> class diagram (클래스를 어떻게 만들지?)
-> java, c# 등 객체지향언어로 구현이 가능하다.

- 맨 위의 TV가 class 이름
- 두 번째칸의 화면크기, 가격, 화질, 제조사가 속성을 의미한다(명사), instance variable
- 세 번째칸의 on/off(), 소리조절(), 설정변경() 이 동작을 의미한다(동사), instance method

-> public class Tv{
   instance 변수
   instance 메소드
}
 instance 변수
- attribute(객체속성) -> 객체의 Data를 담을 변수이다.
[ 제한자 ] Datatype 이름;
-> UML 로의 표현 : 변수명 : DataType [ =값 ]
ex) int displaySize;  ->  price : int
      String brand = "삼성"; -> brand : String = "삼성"

 instance 메소드
- 특정동작을 처리하기 위한 명령문(실행문)들의 묶음
- 의미 : 객체(instance)가 제공하는 기능
- 호출이 되어야만 일한다! (instance 객체의 동작)

※ worker method - 동작을 구현한 메소드 : 일을 처리하는 메소드
※ caller method - worker 메소드를 호출하는 쪽
ex) System.out.println("H.W");   -> println( ) {
      -> 메소드 호출(caller)                 } -> 실제 메소드의 구현 (worker)

 instance 변수 구현
[ 제한자 ]   리턴 type   메소드 이름 ( [매개변수선언, .....] )   -> 메소드 선언부
{                 -> data type   
      메소드 구현                          -> 중괄호 안은 구현부
}
ex) public static void main( String[ ] args )
      -> 제한자

- 리턴타입 : 1개의 DataType 선언
              -> caller 에게 메소드 수행이후 전달할 결과값의 Datatype 선언
              -> 리턴값이 없는 경우 void 선언
- 메소드이름 : 규칙 - 식별자 규칙, 관례 - Camel 표기법
- 매개변수 선언 -> caller 로 부터 받을 값을 저장할 변수 선언 ( 0 ~ n개 )
  -> parameter     -> 값을 초기화 하면 안된다 (변수 선언만 가능), 여거개 선언시 , 로 구분

ex) 1. void method( int a, int b )
      2. void methodA() {  } 
      3. int methodB() {  } -> 일이 끝나면 int를 반환
      4. boolean methodC( int k ) {  } -> 일이 끝나면 true or false 반환, 부르러면 int 값 필요
      5. void methodD(int a, String b) -> 부르려면 int , String 값 한 개씩 필요 

예제의 caller 메소드 
       2번 -> methodA();
       3번 -> int i = methodB();
       4번 -> boolean b = methodC( 10 );
       5번 -> methodD = ( 20, "abc" );

※ UML에서의 메소드 표현
- 메소드이름 ( [매개변수명 : 타입, ....] ) : 리턴 type 
                                                                  -> void 일 경우 생략가능
changeChannel (number : int ) : boolean    ->   boolean changeChannel( int number )


※ 객체 생성, 객체의 instance 변수/메소드 사용 - 호출
1. instance 생성
- 변수선언 :    class 명   변수명  
  ex) Tv myTv;
- Instance 생성 및 변수에 대입 : 변수명 = 
new class명( ) -> myTv = new Tv();
                                                                        -생성자 호출
       -> Tv youtTv = new Tv( );

2. instance 사용
- 변수 : 값 대입/조회, 메소드 : 호출
   -> 객체 . 변수 or 메소드 = 값
                  -> instance member
ex ) myTv . displaySzie = 20;
       System.out.print(myTv.brand);

반응형
Comments