5장. 객체지향과 클래스.

Slides:



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

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
컴퓨터 프로그래밍 기초 [Final] 기말고사
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
자바 5.0 프로그래밍.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
제7장 클래스와 객체.
23장. 구조체와 사용자 정의 자료형 2.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
C#.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
27장. 모듈화 프로그래밍.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
CHAP 21. 전화, SMS, 주소록.
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
[ 단원 04 ] 반복과 배열.
C# 07장. 객체 지향 개념.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
MIDP 네트워크 프로그래밍 ps lab 김윤경.
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
Presentation transcript:

5장. 객체지향과 클래스

학습목표 객체지향 프로그래밍에 대해 이해하고 설명할 수 있다. 클래스와 객체의 생성을 이해하고 프로그래밍에 활용할 수 있다. • 객체지향과 절차적 프로그래밍 방식 • 클래스와 객체, • 추상화, 캡슐화, 상속, 다형성 클래스와 객체의 생성을 이해하고 프로그래밍에 활용할 수 있다. • 클래스 생성 시 필드와 메소드의 구현 • 키워드 new를 사용한 객체의 생성 • 객체 변수에서 필드와 메소드 참조 방법 • 필드 참조 메소드인 getter와 setter 구현과 사용 방법 생성자 개념과 구현 방법을 이해하고 프로그래밍에 활용할 수 있다. • 생성자의 필요성 • 생성자 구현 방법 • 생성자 오버로딩 개념과 구현 방법 • 다른 생성자 호출하기 위한 this() 키워드 static과 final의 사용 방법을 알고 활용할 수 있다. • 클래스 소속을 위한 static • 변수를 상수로 하기 위한 final

1. 객체지향 프로그래밍의 이해

객체지향 개요 객체지형 프로그래밍 언어 객체지향 프로그래밍 원조는 시뮬라(simula)라는 프로그래밍 언어 Section 1 객체지향 프로그래밍의 이해 p148 객체지향 개요 객체지형 프로그래밍 언어 원조는 시뮬라(simula)라는 프로그래밍 언어 클래스라는 개념을 처음으로 도입 객체지향 프로그래밍 클래스(class)를 생성하고 클래스로부터 객체(object)를 만들어 객체 간의 상호작용을 이용하여 주어진 문제를 해결하는 프로그래밍 방식 데이터인 필드와 절차인 메소드를 하나로 묶은 클래스 단위의 프로그램

Section 1 객체지향 프로그래밍의 이해 필드와 메소드 객체(object) 현실 세계의 사물이나 개념을 시스템에서 이용하기 위해 현실 세계를 자연스럽게 표현하여 손쉽게 이용할 수 있도록 만든 소프트웨어 모델 객체 = 속성(attributes, properties) + 행동(messages, behaviors) 속성 객체의 특성을 표현하는 정적인 성질 프로그래밍에서 속성은 필드(field)라 함 행동 객체 내부의 일을 처리 하거나 객체들간의 서로 영향을 주고 받는 동적인 일을 처리하는 단위 행동은 메소드(method)라 함

객체와 클래스 클래스 객체 객체를 만들기 위한 모형이자 틀(template) Section 1 객체지향 프로그래밍의 이해 객체와 클래스 클래스 객체를 만들기 위한 모형이자 틀(template) 객체를 만들려면 반드시 객체의 다양한 특성을 표현할 수 있는 모형인 클래스가 필요 객체 클래스의 구체적인 하나의 실례(instance) 객체와 클래스의 예

추상화 추상화(abstraction) 현실 세계의 사실에서 주어진 문제의 중요한 측면을 주목하여 설명하는 방식 Section 1 객체지향 프로그래밍의 이해 추상화 추상화(abstraction) 현실 세계의 사실에서 주어진 문제의 중요한 측면을 주목하여 설명하는 방식 실세계의 객체에서 불필요한 부분을 제거하여 필요한 부분만을 간결하고 이해하기 쉬운 클래스로 만드는 작업 속성과 행동으로 추상화를 실현

캡슐화 캡슐화(encapsulation) 정보 은닉(information hiding)이 발생 Section 1 객체지향 프로그래밍의 이해 캡슐화 캡슐화(encapsulation) 객체와 객체 간의 의사 소통을 위한 정보만을 노출 실제 내부 구현 정보는 숨기는 원리 추상화 과정에서 클래스를 정의할 때 객체의 자료와 행위를 클래스 단위로 하나로 묶고, 실제 내부 구현 내용을 외부에 감추는 것 정보 은닉(information hiding)이 발생 캡슐화 과정에서 클래스 내부 구현을 외부에 숨김

상속 ‘물려받는다’라는 특징의 상속(inheritance) 객체지향의 가장 핵심이 되는 개념 Section 1 객체지향 프로그래밍의 이해 상속 ‘물려받는다’라는 특징의 상속(inheritance) 객체지향의 가장 핵심이 되는 개념 프로그램을 쉽게 확장할 수 있도록 해주는 강력한 수단 상위 클래스와 하위 클래스 간의 관계: 계층도 상속 장점 공통의 특성을 하위 클래스마다 반복적으로 기술하지 않고 한 번만 기술하기 때문에 중복을 줄여 재사용성의 효과

다형성 다형성(polymorphism) 원래 생물학적 용어로 외부에 보이는 모습은 한 가지 형태이지만 다형성의 예 Section 1 객체지향 프로그래밍의 이해 다형성 다형성(polymorphism) 원래 생물학적 용어로 여러(poly) 형태(morphy)를 의미 외부에 보이는 모습은 한 가지 형태이지만 실질적으로 쓰이는 기능은 여러 가지 역할을 수행한다는 의미 다형성의 예 오버로딩(overloading)이나 오버라이딩(overriding)

2. 클래스와 객체의 생성

클래스의 필드 구현 필드 구현 다양한 필드 지정자(수정자) 신용카드를 추상화한 클래스 CreditCard를 구현 Section 2 클래스와 객체의 생성 p154 클래스의 필드 구현 필드 구현 신용카드를 추상화한 클래스 CreditCard를 구현 신용카드의 속성 카드번호 number, 소유자 owner 등을 고려 다양한 필드 지정자(수정자)

필드의 기본 값 기본 값 선언 시 초기 값이 없으면 자동으로 저장되는 값 타입에 따라 기본이 되는 0 Section 2 클래스와 객체의 생성 p154 필드의 기본 값 기본 값 선언 시 초기 값이 없으면 자동으로 저장되는 값 타입에 따라 기본이 되는 0

객체 생성과 필드 참조 연산자 키워드 new 필드 참조 연산자 . 객체를 생성하기 위해서는 Section 2 클래스와 객체의 생성 객체 생성과 필드 참조 연산자 키워드 new 객체를 생성하기 위해서는 키워드 new 이후에 CreditCard()와 같이 생성자를 호출 필드 참조 연산자 . 참조형 변수인 myCard를 사용하여 필드 owner와 number를 참조 myCard.owner, myCard.number

Section 2 클래스와 객체의 생성 실습예제 5-1

클래스의 메소드 구현 메소드 구현 수정자 반환형 메소드이름(매개변수) { 구현 } 메소드 use() 메소드 payBill() Section 2 클래스와 객체의 생성 클래스의 메소드 구현 메소드 구현 수정자 반환형 메소드이름(매개변수) { 구현 } 메소드 use() 신용카드를 사용하는 메소드 메소드 payBill() 매월 또는 수시로 카드 비용을 지불하는 메소드 메소스 addPoint() 카드 사용실적에 따른 포인트 합산하는 메소드

Section 2 클래스와 객체의 생성 메소드 지정자 메소드 지정자 또는 수정자 다양한 지정자를 위한 키워드

Section 2 클래스와 객체의 생성 실습예제 5-2 신용카드를 추상화하여 여러 필드와 메소드로 구성된 클래스

클래스로부터 객체 생성 클래스 객체 객체를 만드는 모형 클래스로부터 만들어짐. Section 2 클래스와 객체의 생성 클래스로부터 객체 생성 클래스 객체를 만드는 모형 객체 클래스로부터 만들어짐. new 이후에 CreditCard()와 같이 클래스의 생성자(constructor)를 호출하여 객체를 생성

Section 2 클래스와 객체의 생성 객체의 필드와 메소드 참조 참조 연산자 . 참조 변수의 필드와 메소드를 사용

필드 참조 메소드 getter와 setter 구현 Section 2 클래스와 객체의 생성 필드 참조 메소드 getter와 setter 구현 Setter와 Getter 필드의 값을 저장하는 메소드 setter 필드의 값을 반환하는 메소드 getter 키워드 this 객체 자신을 의미하는 키워드

실습예제 5-4 getter와 setter를 구현한 클래스 CreditCard Section 2 클래스와 객체의 생성 package obj.setter; return number;   public class CreditCard { public void setNumber(long number) { public String owner; //카드 소유자 //this.number = number; private long number; //16자리 카드번호 if (number < 1000_0000_0000_0000L) { private int point; //카드 포인트 System.err.println("잘못된 카드 번호입니다."); private int balance; //현재까지 사용액 return; //카드 사용 메소드 public void use(int amount) { this.number = number; balance += amount; } public int getPoint() { //카드 비용 지불 메소드 return point; public void payBill(int amount) { balance -= amount; public void setPoint(int point) { addPoint(amount); this.point = point; //카드 포인트 추가 메소드 public int getBalance() { private void addPoint(int amount) { return balance; point += amount/1000; public void setBalance(int balance) { this.balance = balance; //setter & getter public long getNumber() {

실습예제 5-5 클래스 CreditCard의 객체 생성과 getter와 setter 사용 Section 2 클래스와 객체의 생성 실습예제 5-5 클래스 CreditCard의 객체 생성과 getter와 setter 사용

Section 2 클래스와 객체의 생성 이클립스 팁 getter와 setter의 생성

3. 생성자

생성자 구현(1) 생성자 개요 생성자의 구성 객체를 만드는 틀인 클래스에서 필요하면 생성자를 구현 Section 3 생성자 p164 생성자 구현(1) 생성자 개요 객체를 만드는 틀인 클래스에서 필요하면 생성자를 구현 객체가 생성될 때 필요한 작업을 수행하는 특별한 메소드 주로 객체 필드에 초기 값을 저장하거나 객체의 사용을 위해 필요한 초기화 작업이 수행 생성자의 구성 반환형을 기술하지 않으며 이름은 반드시 클래스 이름 생성자의 인자는 필요하면 기술 생성자는 주로 접근 지정자 public을 사용 만일 필요하다면 생성자의 접근 지정자도 private 또는 protected도 가능

Section 3 생성자 생성자 구현(2) 클래스 student의 생성자

Section 3 생성자 객체 생성을 위한 생성자 호출

기본 생성자(1) 기본 생성자(default constructor) 인자가 없는 생성자 Section 3 생성자 기본 생성자(1) 기본 생성자(default constructor) 인자가 없는 생성자 클래스 Student에서 생성자가 하나도 구현되지 않았다면 new Student()와 같이 인자가 없는 생성자를 호출하여 객체를 생성 생성자를 전혀 구현하지 않은 클래스는 자동으로 기본 생성자를 제공

기본 생성자(2) 클래스에서 인자가 있는 생성자가 적어도 하나 구현되었다면 더 이상 기본 생성자는 자동으로 사용 불가능 Section 3 생성자 기본 생성자(2) 클래스에서 인자가 있는 생성자가 적어도 하나 구현되었다면 더 이상 기본 생성자는 자동으로 사용 불가능 기본 생성자를 사용하려면 기본 생성자도 직접 구현해야 함

Section 3 생성자 실습예제 5-7 학생을 위한 클래스의 생성자 구현과 객체 생성

생성자 오버로딩 필요한 여러 생성자 구현 생성자 오버로딩(constructor overloading) Section 3 생성자 생성자 오버로딩 필요한 여러 생성자 구현 생성자 오버로딩(constructor overloading) 하나의 클래스에서 인자가 다르면 생성자를 여러 개 구현 가능

Section 3 생성자 실습예제 5-8 클래스 CreditCard의 여러 생성자 활용

자기 자신의 다른 생성자 호출 this(…) 구현된 자기 자신의 다른 생성자를 호출하는 문장 생성자 구현에서 첫 줄에는 Section 3 생성자 자기 자신의 다른 생성자 호출 this(…) 구현된 자기 자신의 다른 생성자를 호출하는 문장 생성자 구현에서 첫 줄에는 this(인자)로 다른 생성자를 호출하여 사용 가능 두 번째 줄부터는 사용 불가

실습예제 5-10 자동차를 표현한 클래스 Section 3 생성자 package obj.constructor;   //maxSpeed의 setter와 getter public class Car { public int getMaxSpeed() { private int maxSpeed; //최고 속도 return maxSpeed; public String brandName; //브랜드이름 public int speed; //현재 속도 public void setMaxSpeed(int maxSpeed) { //브랜드 이름을 지정하는 생성자 public Car(String brandName) { this.brandName = brandName; public static void main(String[] args) { } Car mycar = new Car("포르쉐", 300); //브랜드 이름과 최고 속도를 지정하는 생성자 mycar.speedUp(); public Car(String brandName, int maxSpeed) { this(brandName); System.out.print("차종: " + mycar.brandName); this.maxSpeed = maxSpeed; System.out.print(", 최고 속도: " + mycar.getMaxSpeed()); System.out.println(", 현재 속도: " + mycar.speedDown()); //속도 관련 메소드 public int speedUp() { return speed += 30; public int speedDown() { return speed -= 20;

4. 정적인 속성을 위한 static과 상수를 위한 final

정적 필드와 메소드를 위한 키워드 static(1) Section 4 static과 final p174 정적 필드와 메소드를 위한 키워드 static(1) 키워드 static 필드나 메소드의 소속을 클래스로 제한하는 키워드 static을 사용한 정적 변수나 정적 메소드는 클래스 변수와 클래스 메소드 정적 필드 PI 클래스에 소속된 저장공간이 하나만 존재하는 변수 할당되는 객체에는 저장공간이 없음 비정적 필드 radius 할당되는 객체마다 저장공간이 할당되는 객체 소속 변수 정적 필드 참조 방법 정적 필드는 Circle.PI와 같이 클래스이름.정적필드로 참조하는 방법이 원칙 c1.PI나 c2.PI와 같이 객체 이름으로도 참조 가능

정적 필드와 메소드를 위한 키워드 static(2) Section 4 static과 final 정적 필드와 메소드를 위한 키워드 static(2)

Section 4 static과 final 실습예제 5-11 클래스 Circle에서 원주율 PI를 정적으로 선언하여 사용

변수를 상수로 만드는 final 지역 변수의 상수 소속 변수인 필드를 상수로 선언하기 위해 키워드 final을 명시 Section 4 static과 final 변수를 상수로 만드는 final 지역 변수의 상수 키워드 final을 명시 저장된 값을 더 이상 수정할 수 없도록 소속 변수인 필드를 상수로 선언하기 위해 static도 함께 사용하여 정적으로 하는 것을 권유

Section 4 static과 final 실습예제 5-13 클래스 Circle에서 면적과 원의 둘레 길이 구하기

Thank You !