생성자를 배우기 전에...
코드를 한줄 한줄 읽으면서 그때마다 필요한 클래스 정보를 처음 한번만 메모리에 올린다.
만약 클래스 정보를 수정/변경 후에 클래스 정보를 반영하려면 프로그램을 종료 후 재실행을 해야한다.
코드를 읽으면서 필요한 클래스 정보를 요청했는데 그에 해당하는 클래스가 없다면 Exceoption 발생, 프로그램이 종료된다.
생성자
(레퍼런스 타입)Ball (레퍼런스 변수) b1 = (인스턴스 생성을 위한 연산자) new (생성자) Ball();
Ball 인스턴스를 메모리에 생성한다.
각각의 객체를 가리키는 참조 변수가 생성된다.
Ball b1 = new Ball();
Ball b2 = new Ball();
b1 b2는 인스턴스를 참조하는 변수
*자바에서 '='는 참조를 의미한다. -> 왼쪽이 오른쪽을 참조한다.
레퍼런스 변수 사이에 있는 '=='는 같은 인스턴스를 참조하는지 비교하는 연산자이다.
인스턴스 사용을 위해서는 반드시 레퍼런스 변수가 있어야한다. **
응집도와 추상화
객체는 응집도가 높아야하고 추상화가 잘 되어있어야 한다.
응집도 - 관련된 것을 잘 모아서 가지고 있는 것.
추상화 - 중요한 것은 남기고 불필요한 것은 없애는 것.
같은 객체라도 중요한 정보들은 달라진다.
그렇기에 응집도와 추상화가 중요하다.
Cal 이라는 객체를 이용하여 만든 계산기
1에서 100까지의 숫자를 모두 합하여 결과를 출력한다.
Cal : 계산을 위한 객체
- Value – 내부적으로 가지는 정수 값
- 기능
o 더하다(정수) – 특정 정수 값을 받아서 value에 더한다.
o 빼다(정수) – 특정 정수 값을 받아서 value에서 뺀다.
o 초기화() - value값을 0으로 바꾼다
o 출력() - value값을 출력한다.
클래스가 가지는 값을 Field라고 한다.
클래스는 필드와 메소드를 가진다.
필드는 클래스가 가지는 값,
메소드는 클래스의 기능을 말한다.
int value; - 정수를 저장할 수 있는 value라는 필드를 선언했다.
숫자에 해당하는 기본형 타입은 필드 선언 시 모두 0값을 가진다.
메소드는
접근제어자 리턴타입 메소드이름(파라미터타입 파라미터변수…..){
메소드 내용
}
접근제어자
- Public
- Protected
- Private
- (default) 아무것도 붙이지 않는다.
메소드에 선언되는 변수는 모두 지역변수(local variables)라고 한다.
메소드에서 필드를 사용 할 때에는 this.변수명 으로 사용한다.
메소드에서 선언된 지역변수 이름이 필드와 같은 이름이 없을 떈 this는 생략이 가능하다.
필드는 직접 접근해서는 안된다. -> 의도치 않게 사용자가 필드에 접근하여 값에 변동이 생기면 오류가 나거나 할 수 있다.
그러니 외부에서 필드에 접근 할 수 없도록 접근제한자를 사용하여 외부에서 직접 변수에 접근 할 수 없도록 한다.
private int value;
상속과 인스턴스
Software Development Life Cycle 소프트웨어 개발 생명 주기
항상 프로그램은 만들기 전에 필요한 기능부터 생각해야 한다.
자바에서 기능을 생각하여 정의한 것을 interface라고 한다.
인터페이스는 부모클래스에서 선언이 된 메소드를 자식 클래스에서 구현하여 쓰는 것이다. -> 구현의 관계
인터페이스의 예
Collection Framework에서 제공하는 여러 interface들
1. Collection
a. 여기에 자료가 있다는 것을 표현한다.
b. 중복 허용
c. 순서를 기억하지 않는다
d. Add(E) – E 는 Element
e. Int Size()
2. Iterator
a. 자료구조에서 값을 꺼낼 때 사용
b. hasNext() – 꺼낼게 있으면 True 없으면 False
c. E next() – 꺼낸다
3. Set
a. 중복 비허용
b. 순서를 기억하지 않는다
c. Boolean add(e) – 추가, 중복되는 값이 없으면 True
4. List
a. 순서를 기억한다
b. 중복 허용
c. E get(index) – 특정 위치의 값을 꺼낸다.
5. Map
a. Key와 Value 형태로 값을 관리
b. Put(key, value) – 값을 저장
c. Value get(key) – key에 해당하는 value를 구한다.
일반화 - 각각의 대상들이 가진 성질을 모두 설명할 수 있는 대상들이 가진 공통점을 찾는 것
이렇게 일반화 된 클래스를 부모클래스라고 한다.
이러한 추상 클래스는 객체가 될 수 없다. -> 실제로 존재하는 사자 호랑이 고양이 강아지 독수리같은 것이 아니라 '동물'이라는 개념이 존재하는 것. 즉 실체가 없다 = 객체가 될 수 없다.
상속은 is a 관계이다
부모클래스에서 구현 된 메소드는 자식클래스에서도 사용이 가능하다. -> 상속받기 때문
ㅍ
ㅍ
'Java 웹 프로그래밍' 카테고리의 다른 글
1213 강의 정리 (0) | 2018.12.13 |
---|---|
Collection Framework (0) | 2018.12.07 |
객체지향 개발 5대 원리 (수정중) (0) | 2018.12.04 |
12월 3일 강의 요약 (0) | 2018.12.04 |
윈도우즈 10 환경에서 Java 개발 환경을 위한 JDK 설치 및 환경 설정 (0) | 2018.12.03 |