객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주,

Similar documents
PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA PROGRAMMING 실습 08.다형성

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - 2강

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

No Slide Title

Microsoft PowerPoint - Lect04.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

JVM 메모리구조

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

슬라이드 1

PowerPoint Presentation

No Slide Title

Design Issues

No Slide Title

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint - additional01.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 장.객체의이용.ppt

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

슬라이드 1

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

PowerPoint Presentation

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - java2 [호환 모드]

PowerPoint 프레젠테이션

Network Programming

쉽게 풀어쓴 C 프로그래밍

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

17장 클래스와 메소드

PowerPoint 프레젠테이션

쉽게

Microsoft Word - PJ_scjp_9_0_1-lang.doc

02 C h a p t e r Java

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Template

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - Chapter 6.ppt

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

01-OOPConcepts(2).PDF

Microsoft PowerPoint - chap11

Microsoft PowerPoint - C++ 5 .pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

거리계산문제 간단한문제 n 2 차원평면상의두점사이의거리를구하는프로그램을작성해보자 n 해법 : 피타고라스정리 거리구하는공식 n 두점 (x 1, y 1 ) 과 (x 2, y 2 ) 사이의거리 d n 제곱근은 Math.sqrt, 제곱은 Math.ow 로구함 4 절차지향적거리

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - lec7_package [호환 모드]

No Slide Title

Microsoft PowerPoint - chap06-5 [호환 모드]

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

C++ Programming

05-class.key

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - chap10-함수의활용.pptx

쉽게 풀어쓴 C 프로그래밍

JUNIT 실습및발표

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - additional06.ppt [호환 모드]

C# Programming Guide - Types

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

KNK_C_05_Pointers_Arrays_structures_summary_v02

오버라이딩 (Overriding)

슬라이드 1

제8장 자바 GUI 프로그래밍 II

제4장 기본 의미구조 (Basic Semantics)

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - ch07 - 포인터 pm0415

제11장 프로세스와 쓰레드

PowerPoint Presentation

Java Programing Environment

PowerPoint 프레젠테이션

Microsoft Word - java19-1-midterm-answer.doc

11장 포인터

PowerPoint Template

Microsoft PowerPoint - additional08.ppt [호환 모드]

Microsoft PowerPoint - 14주차 강의자료

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Transcription:

제 5 장객체와클래스 Kwangman Man (htt://comiler.sangji.ac.kr, kkman@sangji.ac.kr) SangJi University 2012 1 이장의내용 객체와클래스의기본개념 클래스사용법 클래스를정의하는방법 메소드를구현하는방법 가시성및접근제어 GUI 프로그램의이해및작성 2 5.1 객체와클래스 3 1

객체 Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 좌표상의점 n 상태 : x 좌표값, y 좌표값 n 행동 : 점의이동 주사위 n 상태 : 표면값 n 행동 : 주사위굴리기 은행계좌 n 상태 : 예금주, 잔액 n 행동 : 입금, 출금, 잔액조회 n 입출금을하게되면잔액이변경되며현재잔액에따라출금에영향 4 클래스 Key Point 클래스는객체에대한정의로객체에대한설계도라고생각할수있다. 예를들어이차원좌표상의점을생성하기위해서 n 점의상태와행동을나타내는 Point 클래스를정의 n Point 클래스는이차원좌표상의점을나타내는객체의설계도 n 이클래스와 new 연산자를이용하여원하는수만큼의점객체를생성할수있다. 5 클래스내부 Key Point 클래스내부는상태를나타내기위한데이터 (data) 선언들과행동을정의하는메소드 (method) 선언들로구성된다. 데이터는상태를표현하기위한상수, 변수등을의미하고 메소드는그객체의행동을표현하는함수혹은프로시저라고할수있다. 6 2

Java 프로그램 Key Point Java 프로그램은객체들의특성과기능을정의하는하나혹은그이상의클래스들로이루어진다. Java 애플리케이션프로그램 n main 메소드를포함하는클래스가전체프로그램의시작클래스라고할수있으며 n main 메소드부터프로그램실행이시작된다. 7 객체참조변수 객체를참조하기위한주소를저장하는변수이다. 클래스이름객체참조변수 ; Key Point 객체참조변수는객체를참조하기위한주소를저장하는변수이다. 객체생성 n new 연산자는해당클래스의객체를하나생성하고 n 그객체에대한참조주소를리턴한다. n 그객체를위한기억장소가자동적으로할당된다. 객체참조변수 = new 클래스이름 ( ); 8 Key Point Java에서객체를생성하기위해서는반드시 new 연산자를사용해야한다. 9 3

실체화 (instantiation) 예 n "Playing with Java" 라는스트링 (String 객체 ) 생성 String title; title = new String ("Playing with Java"); 객체를생성하는 String 생성자호출 실체화 n new 연산자를이용하여객체를생성하는것을말하며 n 객체는클래스의실체 (instance) 라고한다. 10 스트링은자주사용되는기본적인객체이므로 new 연산자없이 String 객체를생성하도록허용 title = "Playing with Java"; title = new String("Playing with Java"); 주의객체참조변수를선언했다고객체가생성된것은아니다. 객체는 new 연산자를이용하여별도로생성해야한다. 11 메소드호출 메소드호출 n 객체에점연산자 (dot oerator) 를사용하여메소드를호출할수있다. n 메소드호출은객체에서비스를요청하는것 n 호출된메소드는값을리턴 (return) 할수있다. String 클래스가제공하는가장간단한메소드 length() 스트링의길이를리턴한다. charat(int index) index 위치에있는문자를리턴한다. int count = title.length() Key Point 객체생성후에점연산자 (dot oerator) 를사용하여메소드를호출할수있다. 12 4

13 String 클래스의주요메소드 String tolowercase ( ) n 스트링내의모든대문자를소문자로변경한스트링을리턴한다. String touercase ( ) n 스트링내의모든소문자를대문자로변경한스트링을리턴한다. boolean equals(object o) n 이스트링과객체 o를비교한다. boolean equalsignorecase(string s) n 이스트링과스트링 s를대소문자구별없이비교한다. String relace(char oldchar, char newchar) n 스트링내의 oldchar를 newchar로대치한스트링을리턴한다. String substring (int beginindex, int endindex) n beginindex에서시작하여 endindex에서끝나는서브스트링을리턴 String concat (String str) n 이스트링끝에 str를접합한스트링을리턴한다. 14 String 의주요메소드 메소드 설명 String tolowercase ( ) String touercase ( ) 스트링내의모든대문자를소문자로변경한스트링을리턴한다. 스트링내의모든소문자를대문자로변경한스트링을리턴한다. boolean equals(object o) 이스트링과객체 o 를비교한다. boolean equalsignorecase(string s) String relace(char oldchar, char newchar) String substring (int beginindex, int endindex) String concat (String str) 이스트링과스트링 s 를대소문자구별없이비교한다. 스트링내의 oldchar 를 newchar 로대치한스트링을리턴한다. beginindex 에서시작하여 endindex 에서끝나는서브스트링을리턴한다. 이스트링끝에 str 를접합한스트링을리턴한다. 15 5

16 대표적인 Java API 패키지 패키지 java.lang java.alet java.awt javax.swing java.net java.util javax.xml.arsers 목적 일반적인지원 애플릿 그래픽사용자인터페이스 추가그래픽기능 네트워크통신 유틸리티 XML 문서처리 17 패키지내의클래스사용방법 완전히지정된이름 (fully qualified name) 사용 java.util.scanner scan = new java.util.scanner(); n 이방법은매번사용할때마다긴이름을사용해야한다는단점이있다. imort 후클래스이름만사용하는것이다. imort java.util.scanner; Scanner scan = new Scanner(); 패키지내의모든클래스들을 imort imort java.util.*; 18 6

Math 클래스메소드 메소드 설명 abs(double a) abs(float a) abs(int a) abs(long a) sqrt(double a) ex(double a) sin(double a) cos(double a) tan(double a) 절대값 (absolute value): a 의절대값을리턴한다. 제곱근 (square root): a 의제곱근을리턴한다. 지수승 (exonentiation): e 의 a 승값을리턴한다. 삼각함수 (trigonometric function): 사인, 코사인, 탄젠트값을리턴한다. ow(double a, double b) 거듭제곱 (ower): a 의 b 승값을리턴한다. random() 난수발생기 : 0.0과 1.0 사이의난수 double 값을리턴한다. 19 value = Math.cos(90) + Math.sqrt(2); 20 21 7

Point 클래스본체구조 22 실체변수 (instance variables) 클래스내에선언된변수를실체변수 (instance variables) 라고한다. Point 클래스에서는변수 x, y가실체변수이다. 객체가존재하는한그객체를위한메모리내에존재한다. Key Point 클래스내에선언된변수를실체변수 (instance variables) 라고한다. 23 생성자 (constructor) 클래스와같은이름을갖는특수메소드 new 연산자에의해객체가생성될때자동으로실행된다. 주로객체를초기화하는데사용된다. 주의 : 생성자는리턴타입이없으며리턴타입을사용하면컴파일오류 예 ublic Point() x = 0.0; y = 0.0; Point = new Point() 24 8

매개변수를갖는생성자 생성자도매개변수를가질수있다. ublic Point(double a, double b) x = a; y = b; 객체를생성할때생성자를위한매개변수들을명시함 객체참조변수 = new 클래스이름 ( 매개변수리스트 ); 클래스이름객체참조변수 = new 클래스이름 ( 매개변수리스트 ); 예 Point q = new Point(1.0, 1.0); 25 26 27 9

= new Point(0.0, 0.0);.move(2.0, 5.0); q = new Point(1.0, 1.0); 28 Key Point 실체변수는각객체마다별도의기억장소를유지한다. 29 this 참조 this는지금호출되고있는객체자신을참조한다. 예 : Point 클래스의생성자 class Point rivate double x, y; ublic Point(double a, double b) this.x = a; this.y = b;... class Point rivate double x, y; ublic Point(double x, double y) this.x = x; this.y = y;... 30 10

5.4 정적변수및메소드 31 정적변수 (static variable) 클래스내에모든실체 ( 객체 ) 가공유해서사용하는멤버변수 객체가아니라클래스내에 static 변수를위한기억공간이생성됨. 예 /** /** * 객체의개수를위해실체변수 no 사용 * 객체의개수를위해정적변수 no 사용 */ */ class Point class Point rivate double x, y; rivate double x, y; int no = 0; static int no = 0; ublic Point() x = 0.0; y = 0.0; no++; ublic Point() x = 0.0; y = 0.0; no++; 32 정적메소드 (static method) 정적메소드는객체를생성하지않고클래스이름을이용하여호출 정적메소드는실체변수를사용할수없다. 클래스내의일부혹은모든메소드를 static으로선언할수있다. 대표적인정적메소드 ublic static void main (String[] args) Math 클래스내의모든메소드들은 static 으로선언되어있음. value = Math.cos(90) + Math.sqrt(2); 33 11

5.5 메소드구현과실행 34 메소드선언 메소드머리 (method header) 와메소드본체 (method body) 로구성메소드머리는리턴타입, 메소드이름, 매개변수리스트로구성매개변수리스트는각매개변수의타입 (tye) 과이름을선언 ublic void move(double dx, double dy) x = x + dx; y = y + dy; 35 메소드호출 객체를생성한후에그객체의메소드를호출할수있다. 객체이름. 메소드이름 ( 실매개변수리스트 ); 매개변수전달 (arameter assing) 실매개변수 à 형식매개변수.move(2.0, 5.0); move(double dx, double dy) 36 12

메소드실행흐름 main 메소드에서 move 메소드를호출.move(2.0, 5.0); 37 리턴 (return) 리턴 n 메소드의실행이끝나면실행흐름은호출된위치로되돌아간다. 리턴값 (return value) n 메소드는리턴할때값을리턴할수있다. 리턴문 (return statement) 예 return 식 ; ublic double getx() return x; 38 39 13

40 메소드호출후의상태 41 5.6 메소드중복정의 42 14

메소드중복정의 (method overloading) Key Point 한클래스내에이름은같고매개변수들은다른두개이상의메소드를정의하는것 중복정의된메소드의매개변수들은개수, 순서혹은타입이서로달라야한다. 이를메소드의시그너처 (signature) 라고한다. /** * 중복정의를위한예제클래스 */ ublic class Overload int addnums(int a, int b) return a + b; double addnums(double a, double b) return a + b; 43 메소드중복정의 다음메소드를추가하면어떻게될까요? int addnums(int x, int y) return x + y; long addnums(int a, int b) return a + b; 우균, 창병모 44 생성자중복정의 /** * 중복정의를이용하여점을표현하는클래스 */ class Point rivate double x, y; ublic Point() x = 0.0; y = 0.0; ublic Point(double a, double b) x = a; y = b;... 45 15

생성자중복정의 /** * 중복정의를이용하여점을표현하는클래스 */ class Point rivate double x, y; ublic Point() x = 0.0; y = 0.0; ublic Point(double a, double b) x = a; y = b;... 46 생성자중복정의 /** * 중복정의를이용하여은행계좌를표현하는클래스 */ class Account rivate long number; rivate long balance; ublic Account(long no) number = no; balance = 0; ublic Account(long no, long amount) number = no; balance = amount;... 47 5.7 접근제어 48 16

캡슐화 C 프로그램의전역변수를생각해보자. n 전역변수는프로그램의어느함수에서나사용할수있다. n 전역변수선언이수정되면이변수를사용한모든함수들도수정되어야한다. 캡슐화 (encasulation) n 데이터와관련된메소드들을함께선언하고이메소드들만데이터를사용하게하는것 49 객체와캡슐화 Key Point 객체는캡슐화개념에기초하고있으며자기내부에서관리되어야한다. 객체의내부적관점 n 클래스가정의하는데이터 ( 변수혹은상수 ) 와메소드들의세부사항들이보일것이다 외부적 (external) 관점 n 서비스를제공하는캡슐화된개체 (encasulated entity) n 서비스를제공하는메소드들은그객체의창구 (interface) 역할을한다. n 일종의블랙박스 (black box) 역할을하며내부의일은다른객체들로부터감추어져있다. 50 가시성조정자 캡슐화를지원하기위한 3가지가시성조정자 n ublic : 공용가시성조정자 n rotected : 보호가시성조정자 n rivate : 전용가시성조정자 Key Point ublic 으로선언된멤버필드와메소드는프로그램내의어느곳에서나접근이가능하다. rivate 로선언된멤버필드와메소드는클래스내부에서만접근가능하다. 51 17

가시성조정자 : 예 rivate long number; rivate long balance; ublic long deosit(long amount) ublic long withdraw(long amount) ublic long getbalance( ) ublic String tostring( ) 52 가시성조정자 가시성조정자 ublic 설명 멤버필드와메소드는클래스의내외어느곳에서나접근이가능 rivate 클래스내부에서만접근가능. 아무가시성조정자도기술하지않았을때 ackage 가시성을갖는 ackage 다. 같은패키지내에서는자유롭게접근할수있으나, 패키지외부에서는접근할수없음. 같은패키지내에있는클래스들은모두접근가능하고 rotected 다른패키지의클래스들은이클래스로부터상속받은경우에만접 근가능. 53 5.8 포장클래스 54 18

기본타입 포장클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean void Void 55 포장클래스 포장클래스 (wraer class) n 기본타입의값도필요에따라대응되는객체로표현할수있다. 예 Integer age = new Integer(40); 기본타입 byte short int 포장클래스 Byte Short Integer long Long float Float double Double char Character boolean Boolean void Void 56 포장클래스 포장클래스가제공하는상수와메소드예 Integer.MIN_VALUE, Integer.MAX_VALUE num = Integer.arseInt(str); 자동박스 (autoboxing): Java 5 이후버전 Integer obj; int num = 42; obj = num; 57 19

5.9 GUI 프로그램 58 프레임 프레임 JFrame frame = new JFrame(); 타이틀바 콘텐트페인 59 60 20

61 62 GUI 컴포넌트 GUI 컴포넌트 (comonent) n 레이블 (label), 버튼 (button), 텍스트필드 (text field), n 텍스트영역 (text area), 스크롤바 (scroll bar), 메뉴 (menu) 등 java.awt n Abstract Windowing Toolkit (AWT) 으로원조 Java GUI 패키지 javax.swing n 다양한컴포넌트가추가된 GUI 패키지 63 21

GUI 컨테이너 GUI 컨테이너 (container) n 다른컴포넌트들을포함하고조직하는데사용되며이자체가하나의특수한컴포넌트이다. n 컨테이너의포함관계는윈도우즈폴더와유사예 n 프레임 (frame), 패널 (anel), 애플릿 (alet), 대화상자 (dialog box) 등 n JFrame은일종의 Frame이며 Frame은일종의 Window이다. n Window는일종의 Container이며 Container는일종의 Comonent이다. 패널 (anel) n 다른컴포넌트들을포함하고조직할수있는컨테이너로스스로디스플레이될수없다. n 디스플레이하려면콘텐트페인같은다른컨테이너에 add 되어야한다 n awt에서제공하는 Panel과 swing에서제공하는 JPanel이있다 64 우균, 창병모 65 신호등예제 TrafficLight 클래스 n main 메소드를포함하고있는클래스로먼저프레임을생성하고이프레임에그림을그리기위한 TrafficLightPanel을생성하고이를추가하여보여준다. TrafficLightPanel 클래스 n 패널을위한클래스로패널에신호등그림을그리기위한클래스 n aintcomonent 메소드는그림을그리는메소드로패널이디스플레이될때자동으로수행된다. ublic void aintcomonent (Grahics age) n Grahics 객체는그래픽컨텍스트를나타내며화면에그림을그리기위한환경과메소드들을제공한다 age.setcolor(color.red); age.filloval(50,50,40,40);. 66 22

67 68 Key Point 69 23

Key Point 객체는그객체의특성을나타내는상태 (state) 와그객체의행동 (behaviors) 으로이루어진다. 객체생성후에점연산자 (dot oerator) 를사용하여메소드를호출할수있다. 클래스내에선언된변수를실체변수 (instance variables) 라고한다. 실체변수는각객체마다별도의기억장소를유지한다. 변수의유효범위 (scoe of variable) 는프로그램에서그데이터가사용될수있는범위를말한다. 70 Key Point 메소드중복정의는한클래스내에이름이같고매개변수들은다른두개이상의메소드를정의하는것이다. 객체는캡슐화개념에기초하고있으며자기내부에서관리되어야한다. ublic으로선언된멤버필드와메소드는프로그램내의어느곳에서나접근이가능하다. rivate로선언된멤버필드와메소드는클래스내부에서만접근가능하다. 71 프로그래밍실습 72 24

프로그래밍실습 1 1. n 면주사위 n 개의면을갖는주사위클래스를작성해보자. 작성한클래스를이용하여 2 개의주사위를생성하고각각굴려서그표면값의합을출력해보자. 73 프로그래밍실습 2 2. 색깔있는점 Point 클래스를색을갖는 ColoredPoint 클래스로확장하시오. 이클래스는점의색을표현하여야하고점의색을리턴하는 getcolor() 메소드와해당좌표에점을그리는 draw(grahics g) 메소드를포함하여야한다. 74 프로그래밍실습 3 3. 명함자신의명함을디스플레이하는 GUI 프로그램을작성하시오. 75 25