일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 오블완
- 자바스크립트
- 예제로 배우는 스프링 입문
- Spring
- Sort
- 카카오
- 클린아키텍처
- 카카오 면접
- java
- 스프링 핵심원리
- 코딩테스트
- k8s
- 이펙티브 자바
- 티스토리챌린지
- 이펙티브자바
- ElasticSearch
- kubernetes
- 자바
- 스프링핵심원리
- JavaScript
- Effective Java 3
- 이차전지관련주
- 김영한
- 스프링
- 스프링부트
- 엘라스틱서치
- effectivejava
- 알고리즘정렬
- Effective Java
- 알고리즘
- Today
- Total
Kim-Baek 개발자 이야기
자바 기본 (9) - 객체와 클래스 본문
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다
◎ 객체와 클래스
- 객체 (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);
'개발 > java basic' 카테고리의 다른 글
자바 기본 (11) - 생성자, 접근제한자, VO (0) | 2020.10.02 |
---|---|
자바 기본 (10) - 오버로딩, 생성자 (0) | 2020.10.01 |
자바 기본 (8) - 이클립스 사용, 객체지향과 절차지향 (0) | 2020.09.29 |
자바 기본 (6) - 입출력, 배열 (0) | 2020.09.27 |
자바 기본 (5) - 시험, 조건문, 반복문 (0) | 2020.09.26 |