제7장 클래스와 객체.

Slides:



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

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
어서와 Java는 처음이지! 제5장 클래스, 객체, 메소드.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
제 9 장 포인터.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Lesson 6. 형변환.
5장. 참조 타입.
Power Java 제7장 클래스와 객체.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C++ Espresso 제12장 템플릿.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
23장. 구조체와 사용자 정의 자료형 2.
자바 5.0 프로그래밍.
11장. 1차원 배열.
13. 연산자 오버로딩.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
Method & library.
JA A V W. 03.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
27장. 모듈화 프로그래밍.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
C++ Espresso 제8장 객체 지향 소개.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
Power Java 제11장 상속.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
제 15 강 문자와 코드 shcho.pe.kr.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Numerical Analysis Programming using NRs
Chapter 11 구조체.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
어서와 C언어는 처음이지 제21장.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
C++ Espresso 제15장 STL 알고리즘.
7 생성자 함수.
6 객체.
Presentation transcript:

제7장 클래스와 객체

이번 장에서 학습할 내용 객체지향이란? 객체 메시지 클래스 객체 지향의 장점 String 클래스

실제 세계는 객체로 이루어진다.

객체 지향이란? 실제 세계를 모델링하여 소프트웨어를 개발하는 방법

절차 지향과 객체 지향 절차 지향 프로그래밍(procedural programming): 문제를 해결하는 절차를 중요하게 생각하는 방법 객체 지향 프로그래밍(Object-Oriented Programming): 데이터와절차를 하나의 덩어리(객체)로 묶어서 생각하는 방법

객체 지향 방법 객체 지향으로 소프트웨어를 작성하는 것은 컴퓨터 하드웨어 부품을 구입하여서 컴퓨터를 조립하는 것과 비슷하다. 그림 7-3 . 객체 지향 방법

절차 지향과 객체 지향

중간 점검 문제 객체 지향 프로그래밍은 ________들을 조합하여서 프로그램을 작성하는 기법이다. 2. 객체 지향 프로그래밍의 시작은 __________년대에 개발된 ________언어이다.

객체 지향의 3대 특징 캡슐화 상속 다형성

캡슐화 캡슐화(encapsulation): 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리되어 있는 것 그림 7-4 . 객체 지향을 사용하면 코드를 재사용할 수 있다.

캡슐화와 정보 은닉

업그레이드가 쉽다. 라이브러리가 업그레이드되면 쉽게 바꿀 수 있다. 정보 은닉이 가능하기 때문에 업그레이드 가능 그림 7-5 . 정보 은닉의 장점

상속 상속(inheritance): 이미 작성된 클래스(부모 클래스)를 이어받아서 새로운 클래스(자식 클래스)를 생성하는 기법 기존의 코드를 재활용하기 위한 기법 그림 7-6 . 상속의 개념

다형성 하나의 이름(방법)으로 많은 상황에 대처하는 기법 개념적으로 동일한 작업을 하는 멤버 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해진다

객체 지향의 장점 신뢰성있는 소프트웨어를 쉽게 작성할 수 있다. 코드를 재사용하기 쉽다. 업그레이드가 쉽다. 디버깅이 쉽다.

쉬운 디버깅 예를 들어서 절차 지향 프로그램에서 하나의 변수를 1000개의 함수가 사용하고 있다고 가정해보자. -> 하나의 변수를 1000개의 함수에서 변경할 수 있다. 객체 지향 프로그램에서 100개의 클래스가 있고 클래스당 10개의 메소드를 가정해보자. -> 하나의 변수를 10개의 메소드에서 변경할 수 있다. 어떤 방법이 디버깅이 쉬울까?

중간 점검 문제 1. 자바에서 코드 재사용이 쉬운 이유는 관련된 ________와 ___________이 하나의 덩어리로 묶여 있기 때문이다. 2. 정보 은닉이란 ________을 외부로부터 보호하는 것이다. 3. 정보를 은닉하면 발생하는 장점은 무엇인가?

객체란? 객체(Object)는 상태와 동작을 가지고 있다. 객체의 상태(state)는 객체의 특징값(속성)이다. 객체의 동작(behavior) 또는 행동은 객체가 취할 수 있는 동작 그림 7-7 . 자동차 객체의 예

중간 점검 문제

메시지 소프트웨어 객체는 메시지(message)를 통해 다른 소프트웨어 객체와 통신하고 서로 상호 작용한다. 그림 7-8 . 메시지 전달

중간 점검 문제 객체들은 ________전달을 통해서 서로 간에 상호 작용을 한다. 자동차 객체에서 생각할 수 있는 메시지와 매개 변수에 대하여 나열하여 보라.

클래스 클래스(class): 객체를 만드는 설계도 클래스로부터 만들어지는 각각의 객체를 특별히 그 클래스의 인스턴스(instance)라고도 한다. 그림 7-9 . 객체를 클래스라는 설계도로 생성된다.

클래스와 객체

클래스의 구조

클래스의 예: 박스

클래스의 예: 자동차

객체를 생성하려면 Car myCar = new Car( ); 자바에서 객체를 생성하는 방법은 new 한가지뿐입니다.

기초 변수와 참조 변수 그림 7-10 . 변수의 종류

객체의 생성 ① 참조 변수 선언 - Car타입의 객체를 참조할 수 있는 변수 myCar를 선언한다. ② 객체 생성 – new 연산자를 이용하여 객체를 생성하고 객체 참조값을 반환한다. ③ 참조 변수와 객체의 연결 – 생성된 새로운 객체의 참조값을 myCar 라는 참조 변수에 대입한다.

객체를 가리키는 참조값을 담을 수 있는 변수만 생성됨. 주의 위의 문장으로 객체가 생성되는 것은 아님!!! 객체를 가리키는 참조값을 담을 수 있는 변수만 생성됨.

객체의 필드와 메소드 접근 도트(.) 연산자 사용! 객체의 멤버를 사용하려면 연산자 사용

필드와 메소드 접근

객체 생성 코드

실행 결과

객체를 하나 더 생성하는 코드

객체를 하나 더 생성하는 코드

중간 점검 문제 객체들을 만드는 설계도에 해당되는 것이 _____________이다. 같은 종류의 객체가 여러 개 생성될 때 각 객체의 변수와 메소드는 공유되는가? 아니면 각 객체마다 별도로 만들어지는가? 클래스 선언 시에 클래스 안에 포함되는 것은 _____과 ______이다. 객체의 멤버에 접근하는데 사용되는 연산자는 ________이다. 각 객체마다 별도로 가지고 있는 것은 클래스의 _________이다. 상품의 재고를 나타내는 클래스를 작성하여 보자. 클래스 안에 상품 번호, 재고 수량이 필드로 저장되고 재고를 증가, 감소하는 메소드를 작성하여 보라.

메소드 메소드는 입력을 받아서 처리를 하고 결과를 반환하는 가상적인 상자와 같다.

메소드의 구조

인수와 매개 변수 메소드 호출시 전달하는 값을 인수(argument) 메소드에서 값을 받을 때 사용하는 변수를 매개 변수(parameter)

객체의 일생

객체의 생성

참조값을 복사한다면 두 개의 참조 변수가 하나의 객체를 가리킬 수 있다.

객체의 소멸

객체의 소멸

중간 점검 문제 기초 변수와 참조 변수의 차이점은 무엇인가? 하나의 참조 변수가 다른 참조 변수로 대입되면 어떤 일이 발생하는가? 객체를 소멸시키려면 어떻게 하면 되는가?

문자열 객체 그림 7-16 . 문자열은 객체이다.

클래스에서 객체를 생성하는 방법 단 하나의 방법만이 존재한다. new 연산자만이 객체를 생성합니다.

.(도트) 연산자를 사용하여서 메소드를 호출합니다. 객체의 메소드의 호출 .(도트) 연산자를 사용하여서 메소드를 호출합니다.

String 클래스의 메소드

문자열의 결합 두 개의 문자열은 + 연산자를 이용하여 결합될 수 있다. String subject = "Money"; String other = " has no value if it is not used"; String sentence = subject + other;  "Money has no value if it is not used"

숫자를 문자열로 변환 int x = 20; System.out.println("결과값은 “ + x); // ”결과값은 20” 이 출력된다. String answer = "The answer is " + 100; // “The answer is 100" 결과값은 20 The answer is 100

예제 문자열의 이 =13 A barking dog never Bites! A barking dog bar

중간 점검 문제 1. 변수를 크게 두 가지로 나누면 __________변수와 ___________변수로 분류할 수 있다. 2. 객체를 생성하는 키워드는 ___________이다. 3. 문자열은 클래스 ___________의 객체이다. 4. 문자열의 길이를 반환하는 메소드는 _____________이다. 5. 변수 i의 값을 문자열로 변환하는 가장 간단한 방법은 ___ 연산자를 사용하는 것이다.

문자열을 숫자로 변환 문자열 “123”을 숫자 123으로 변환 랩퍼 클래스(wrapper class)를 사용한다. (예) Integer obj = new Integer(10);

랩퍼 클래스의 유용한 메소드

int i = Integer.parseInt("123"); // 변수 i에 정수 123이 저장된다. double d = Double.parseDouble("3.141592"); // 변수 d에 실수 3.141592가 저장된다.

중간 점검 문제 변수를 크게 두 가지로 나누면 __________변수와 ___________변수로 분류할 수 있다. 객체를 생성하는 키워드는 ___________이다. 문자열은 클래스 ___________의 객체이다. 문자열의 길이를 반환하는 메소드는 _____________이다. 변수 i의 값을 문자열로 변환하는 가장 간단한 방법은 ___ 연산자를 사용하는 것이다.