6장. 클래스.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제7장 클래스와 객체.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
23장. 구조체와 사용자 정의 자료형 2.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
10장. 예외처리.
자바 5.0 프로그래밍.
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
27장. 모듈화 프로그래밍.
전자정부 표준프레임워크 호환성 가이드 전자정부 표준프레임워크 사업단 실행환경 개발팀.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Chapter 11 구조체.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
Presentation transcript:

6장. 클래스

1절. 객체 지향 프로그래밍 2절. 객체(Object)와 클래스(Class) 3절. 클래스 선언 4절. 객체 생성과 클래스 변수 5절. 클래스의 구성 멤버 6절. 필드(Field) 7절. 생성자(Constructor) 8절. 메소드(Method) 9절. 인스턴스 멤버와 this 10절. 정적 멤버와 static 11절. final 필드와 상수(static final) 12절. 패키지(package) 13절. 접근 제한자 14절. Getter와 Setter 15절. 어노테이션(Annotation)

1절. 객체 지향 프로그래밍 객체 지향 프로그래밍 객체(Object)란? OOP: Object Oriented Programming 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법 객체(Object)란? 물리적으로 존재하는 것 (자동차, 책, 사람) 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 모든 것 객체는 필드(속성) 과 메소드(동작)로 구성된 자바 객체로 모델링 가능

1절. 객체 지향 프로그래밍 객체의 상호 작용 객체들은 서로 간에 기능(동작)을 이용하고 데이터를 주고 받음

1절. 객체 지향 프로그래밍 객체간의 관계 객체 지향 프로그램에서는 객체는 다른 객체와 관계를 맺음 관계의 종류 집합 관계: 완성품과 부품의 관계 사용 관계: 객체가 다른 객체를 사용하는 관계 상속 관계: 종류 객체와 구체적인 사물 객체 관계

1절. 객체 지향 프로그래밍 객체 지향 프로그래밍의 특징 캡슐화 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것 외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용 가능 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인 해 객체가 손상되지 않도록 자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지 결정하기 위해 접근 제한자(Access Modifier) 사용

1절. 객체 지향 프로그래밍 객체 지향 프로그래밍의 특징 상속 상위(부모) 객체의 필드와 메소드를 하위(자식) 객체에게 물려주는 행위 하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있음 상속 대상: 필드와 메소드 상속의 효과 상위 객체를 재사용해서 하위 객체를 빨리 개발 가능 반복된 코드의 중복을 줄임 유지 보수의 편리성 제공 객체의 다형성 구현

1절. 객체 지향 프로그래밍 객체 지향 프로그래밍의 특징 다형성 (Polymorphism) 같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질 부모 타입에는 모든 자식 객체가 대입 인터페이스 타입에는 모든 구현 객체가 대입 효과 객체를 부품화시키는 것 가능 유지보수 용이

2절. 객체와 클래스 객체(Object)와 클래스(Class) 현실세계: 설계도  객체 자바: 클래스  객체 현실세계: 설계도  객체 자바: 클래스  객체 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance) 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있음

3절. 클래스 선언 클래스의 이름 자바 식별자 작성 규칙에 따라야 한글 이름도 가능하나, 영어 이름으로 작성 알파벳 대소문자는 서로 다른 문자로 인식 첫 글자와 연결된 다른 단어의 첫 글자는 대문자로 작성하는 것이 관례

3절. 클래스 선언 클래스 선언과 컴파일 소스 파일 생성: 클래스이름.java (대소문자 주의) 소스 작성 소스 파일당 하나의 클래스를 선언하는 것이 관례 두 개 이상의 클래스도 선언 가능 소스 파일 이름과 동일한 클래스만 public으로 선언 가능 선언한 개수만큼 바이트 코드 파일이 생성 컴파일 클래스이름.class javac.exe Car.java public class Car { } class Tire { 컴파일 Car.class Tire.class javac.exe

4절. 객체 생성과 클래스 변수 new 연산자 객체 생성 역할 new 연산자는 객체를 생성 후, 객체 생성 번지 리턴 클래스()는 생성자를 호출하는 코드 생성된 객체는 힙 메모리 영역에 생성 new 연산자는 객체를 생성 후, 객체 생성 번지 리턴

4절. 객체 생성과 클래스 변수 클래스 변수 new 연산자에 의해 리턴 된 객체의 번지 저장 (참조 타입 변수) 힙 영역의 객체를 사용하기 위해 사용

4절. 객체 생성과 클래스 변수 클래스의 용도 라이브러리(API: Application Program Interface) 용 자체적으로 실행되지 않음 다른 클래스에서 이용할 목적으로 만든 클래스 실행용 main() 메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스

5절. 클래스의 구성 멤버 클래스의 구성 멤버 필드(Field) 생성자(Constructor) 메소드(Method)

6절. 필드(field) 필드의 내용 객체의 고유 데이터 객체가 가져야 할 부품 객체 객체의 현재 상태 데이터

6절. 필드(field) 필드 선언

6절. 필드(field) 필드의 기본 초기값 초기값 지정되지 않은 필드 객체 생성시 자동으로 기본값으로 초기화

6절. 필드(field) 필드 사용 필드 값을 읽고, 변경하는 작업을 말한다. 필드 사용 위치 객체 내부: “필드이름” 으로 바로 접근 객체 외부: “변수.필드이름”으로 접근

7절. 생성자(Constructor) 생성자 기본 생성자(Default Constructor) new 연산자에 의해 호출되어 객체의 초기화 담당 필드의 값 설정 메소드 호출해 객체를 사용할 수 있도록 준비하는 역할 수행 기본 생성자(Default Constructor) 모든 클래스는 생성자가 반드시 존재하며 하나 이상 가질 수 있음 생성자 선언을 생략하면 컴파일러는 다음과 같은 기본 생성자 추가

7절. 생성자(Constructor) 생성자 선언 디폴트 생성자 대신 개발자가 직접 선언 개발자 선언한 생성자 존재 시 컴파일러는 기본 생성자 추가하지 않음 new 연산자로 객체 생성시 개발자가 선언한 생성자 반드시 사용

7절. 생성자(Constructor) 필드 초기화 초기값 없이 선언된 필드는 객체가 생성될 때 기본값으로 자동 설정 다른 값으로 필드 초기화하는 방법 필드 선언할 때 초기값 설정 생성자의 매개값으로 초기값 설정 매개 변수와 필드명 같은 경우 this 사용 (p.206~208)

7절. 생성자(Constructor) 생성자 다양화해야 하는 이유 생성자 오버로딩(Overloading) (p.208~211) 객체 생성할 때 외부 값으로 객체를 초기화할 필요 외부 값이 어떤 타입으로 몇 개가 제공될 지 모름 - 생성자도 다양화 생성자 오버로딩(Overloading) (p.208~211) 매개변수의 타입, 개수, 순서가 다른 생성자 여러 개 선언

7절. 생성자(Constructor) 다른 생성자 호출( this() ) 생성자 오버로딩되면 생성자 간의 중복된 코드 발생 초기화 내용이 비슷한 생성자들에서 이러한 현상을 많이 볼 수 있음 초기화 내용을 한 생성자에 몰아 작성 다른 생성자는 초기화 내용을 작성한 생성자를 this(…)로 호출

8절. 메소드(method) 메소드란? 메소드 선언 객체의 동작(기능) 호출해서 실행할 수 있는 중괄호 { } 블록 메소드 호출하면 중괄호 { } 블록에 있는 모든 코드들이 일괄 실행 메소드 선언

8절. 메소드(method) 메소드 리턴 타입 메소드 이름 메소드 실행된 후 리턴하는 값의 타입 메소드는 리턴값이 있을 수도 있고 없을 수도 있음 메소드 이름 자바 식별자 규칙에 맞게 작성 [메소드 선언] [메소드 호출]

8절. 메소드(method) 메소드 매개변수 선언 매개변수는 메소드를 실행할 때 필요한 데이터를 외부에서 받기 위해 사용 매개변수는 메소드를 실행할 때 필요한 데이터를 외부에서 받기 위해 사용 매개변수도 필요 없을 수 있음 [메소드 선언] [메소드 호출]

8절. 메소드(method) 리턴(return) 문 (p.221~224) 메소드 실행을 중지하고 리턴값 지정하는 역할 리턴값이 있는 메소드 반드시 리턴(return)문 사용해 리턴값 지정해야 return 문 뒤에 실행문 올 수 없음 리턴값이 없는 메소드 메소드 실행을 강제 종료 시키는 역할

8절. 메소드(method) 메소드 호출 메소드는 클래스 내∙외부의 호출에 의해 실행 클래스 내부: 메소드 이름으로 호출 (p.225~228) 클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출 (p.228~229)

8절. 메소드(method) 메소드 오버로딩(Overloading) 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것 하나의 메소드 이름으로 다양한 매개값 받기 위해 메소드 오버로딩 오버로딩의 조건: 매개변수의 타입, 개수, 순서가 달라야 ?

9절. 인스턴스 멤버와 this 인스턴스 멤버란? 객체(인스턴스) 마다 가지고 있는 필드와 메소드 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부름 인스턴스 멤버는 객체 소속된 멤버이기 때문에 객체가 없이 사용불가

9절. 인스턴스 멤버와 this this 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용

10절. 정적 멤버와 static 정적(static) 멤버란? 정적 멤버 선언 클래스에 고정된 필드와 메소드 - 정적 필드, 정적 메소드 정적 멤버는 클래스에 소속된 멤버 객체 내부에 존재하지 않고, 메소드 영역에 존재 정적 멤버는 객체를 생성하지 않고 클래스로 바로 접근해 사용 정적 멤버 선언 필드 또는 메소드 선언할 때 static 키워드 붙임

10절. 정적 멤버와 static 정적 멤버 사용 클래스 이름과 함께 도트(.) 연산자로 접근 [바람직한 사용] [바람직하지 못한 사용]

10절. 정적 멤버와 static 인스턴스 멤버 선언 vs 정적 멤버 선언의 기준 필드 메소드 객체 마다 가지고 있어야 할 데이터  인스턴스 필드 공용적인 데이터  정적 필드 메소드 인스턴스 필드로 작업해야 할 메소드  인스턴스 메소드 인스턴스 필드로 작업하지 않는 메소드  정적 메소드

10절. 정적 멤버와 static 정적 초기화 블록 클래스가 메소드 영역으로 로딩될 때 자동으로 실행하는 블록 정적 필드의 복잡한 초기화 작업과 정적 메소드 호출 가능 클래스 내부에 여러 개가 선언되면 선언된 순서대로 실행

10절. 정적 멤버와 static 정적 메소드와 정적 블록 작성시 주의할 점 객체가 없어도 실행 가능 블록 내부에 인스턴스 필드나 인스턴스 메소드 사용 불가 객체 자신의 참조인 this 사용 불가 EX) main()

10절. 정적 멤버와 static 싱글톤(Singleton) 싱글톤을 만드는 방법 하나의 애플리케이션 내에서 단 하나만 생성되는 객체 싱글톤을 만드는 방법 외부에서 new 연산자로 생성자를 호출할 수 없도록 막기 private 접근 제한자를 생성자 앞에 붙임 클래스 자신의 타입으로 정적 필드 선언 자신의 객체를 생성해 초기화 private 접근 제한자 붙여 외부에서 필드 값 변경 불가하도록 외부에서 호출할 수 있는 정적 메소드인 getInstance() 선언 정적 필드에서 참조하고 있는 자신의 객체 리턴

10절. 정적 멤버와 static 싱글톤 얻는 방법

11절. final 필드와 상수(static final) 최종적인 값을 갖고 있는 필드 = 값을 변경할 수 없는 필드 final 필드의 딱 한번의 초기값 지정 방법 필드 선언 시 생성자

11절. final 필드와 상수(static final) 객체마다 가지는 불변의 인스턴스 필드 상수(static final): 객체마다 가지고 있지 않음 메소드 영역에 클래스 별 로 관리되는 불변의 정적 필드 공용 데이터로서 사용 상수 이름은 전부 대문자로 작성 다른 단어가 결합되면 _ 로 연결

12절. 패키지(package) 패키지란? 클래스를 기능별로 묶어서 그룹 이름을 붙여 놓은 것 클래스 이름의 일부 파일들을 관리하기 위해 사용하는 폴더(디렉토리)와 비슷한 개념 패키지의 물리적인 형태는 파일 시스템의 폴더 클래스 이름의 일부 클래스를 유일하게 만들어주는 식별자 전체 클래스 이름 = 상위패키지.하위패키지.클래스 클래스명이 같아도 패키지명이 다르면 다른 클래스로 취급

12절. 패키지(package) 패키지란? 클래스 선언할 때 패키지 결정 클래스 선언할 때 포함될 패키지 선언 클래스 파일은(~.class) 선언된 패키지와 동일한 폴더 안에서만 동작 클래스 파일은(~.class) 다른 폴더 안에 넣으면 동작하지 않음

12절. 패키지(package) import 문 패키지 내에 같이 포함된 클래스간 클래스 이름으로 사용 가능 패키지가 다른 클래스를 사용해야 할 경우 패키지 명 포함된 전체 클래스 이름으로 사용 Import 문으로 패키지를 지정하고 사용

13절. 접근 제한자 접근 제한자(Access Modifier) 클래스 및 클래스의 구성 멤버에 대한 접근을 제한하는 역할 다른 패키지에서 클래스를 사용하지 못하도록 (클래스 제한) 클래스로부터 객체를 생성하지 못하도록 (생성자 제한) 특정 필드와 메소드를 숨김 처리 (필드와 메소드 제한) 접근 제한자의 종류

13절. 접근 제한자 클래스의 접근 제한 default public 클래스 선언할 때 public 생략한 경우 다른 패키지에서는 사용 불가 public 다른 개발자가 사용할 수 있도록 라이브러리 클래스로 만들 때 유용

13절. 접근 제한자 생성자 접근 제한 (p.260~262) 필드와 메소드의 접근 제한 (p.262~264) 생성자가 가지는 접근 제한에 따라 호출 여부 결정 필드와 메소드의 접근 제한 (p.262~264) 클래스 내부, 패키지 내, 패키지 상호간에 사용할 지 고려해 선언

14절. Getter와 Setter 클래스 선언할 때 필드는 일반적으로 private 접근 제한 Getter Setter getFieldName() 또는 isFieldName() 메소드 필드 타입이 boolean 일 경우 isFieldName() Setter 외부에서 주어진 값을 필드 값으로 수정 필요할 경우 외부의 값을 유효성 검사 setFieldName(타입 변수) 메소드 매개 변수 타입은 필드의 타입과 동일

15절. 어노테이션(Annotation) 어노테이션(Annotation)이란? 프로그램에게 추가적인 정보를 제공해주는 메타데이터(metadata) 어노테이션 용도 컴파일러에게 코드 작성 문법 에러 체크하도록 정보 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동 생성하게 정보 제공 실행 시(런타임시) 특정 기능 실행하도록 정보 제공

15절. 어노테이션(Annotation) 어노테이션 타입 정의와 적용 어노테이션 타입 정의 어노테이션 타입 적용 소스 파일 생성: AnnotatoinName.java 소스 파일 내용 어노테이션 타입 적용

15절. 어노테이션(Annotation) 기본 엘리먼트 value 어노테이션 적용할 때 엘리먼트 이름 생략 가능

15절. 어노테이션(Annotation) 어노테이션 적용 대상 코드 상에서 어노테이션을 적용할 수 있는 대상 java.lang.annotation.ElementType 열거 상수로 정의

15절. 어노테이션(Annotation) 어노테이션 유지 정책 어노테이션 적용 코드가 유지되는 시점을 지정하는 것 java.lang.annotation.RetentionPolicy 열거 상수로 정의 리플렉션(Reflection): 런타임에 클래스의 메타 정보를 얻는 기능 클래스가 가지고 있는 필드, 생성자, 메소드, 어노테이션의 정보를 얻을 수 있음 런타임 시 어노테이션 정보를 얻으려면 유지 정책을 RUNTIME으로 설정

15절. 어노테이션(Annotation) 런타임시 어노테이션 정보 사용하기 클래스에 적용된 어노테이션 정보 얻기 클래스.class 의 어노테이션 정보를 얻는 메소드 이용 필드, 생성자, 메소드에 적용된 어노테이션 정보 얻기 다음 메소드 이용해 java.lang.reflect 패키지의 Field, Constructor, Method 클래스의 배열 얻어냄

15절. 어노테이션(Annotation) 런타임시 어노테이션 정보 사용하기 Field, Constructor, Method가 가진 다음 메소드 호출 어노테이션 정보를 얻기 위한 메소드