윤 홍 란 hryun@sookmyung.ac.kr 제3장 클래스와 객체의 사용-1 윤 홍 란 hryun@sookmyung.ac.kr.

Slides:



Advertisements
Similar presentations
5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
Advertisements

명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
제3장 클래스와 객체의 사용.
제 7주 2015년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
객체지향 프로그래밍.
11장. 기본 API 클래스.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
Java Seminar 6.
Java Presentation 중간 시험2 풀이
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
[INA470] Java Programming Youn-Hee Han
명품 JAVA Essential.
명품 JAVA Essential.
정적 메소드와 정적 변수 상수 래퍼 클래스 포매팅
명품 JAVA Essential.
명품 JAVA Programming 제 4 장 클래스와 객체.
Power Java 제4장 자바 프로그래밍 기초.
10장 객체-지향 프로그래밍 II ©창병모.
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
명품 JAVA Essential.
명품 Java Programming.
제 11 장 java.lang 패키지 제 12 장 문자열 제 13 장 유틸리티 제 14 장 입출력 제 15 장 네트워킹
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
Power Java 제7장 클래스와 객체.
5장 조건과 반복 ①.
제2장 데이터 및 수식.
객체지향적인 프로그래밍에 대한 이해 클래스와 객체의 개념에 대한 이해
Power Java 제20장 패키지.
7장 배열 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
5장 조건과 반복 ②.
제2장 데이터 및 수식.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
제3장 클래스와 객체의 사용.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
JA A V W. 04.
자바 5.0 프로그래밍.
Chapter 4 변수 및 바인딩.
5장 조건과 반복 ①.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
Chapter 4 클래스 작성.
Java 5장. 객체지향 개념 public class SumTest {
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

윤 홍 란 hryun@sookmyung.ac.kr 제3장 클래스와 객체의 사용-1 윤 홍 란 hryun@sookmyung.ac.kr

클래스와 객체의 사용 3장 내용 객체 생성 과 객체 참조 String 클래스와 그 메쏘드들 Java 표준 클래스 라이브러리 Random과 Math 클래스들 출력 포맷 열거 타입(enumerated type) 포장 클래스(wrapper class) 그래픽 컴포넌트와 컨테이너 레이블과 이미지

Outline 객체 생성 String 클래스 패키지 출력 포맷 열거 타입 포장 클래스 컴포넌트와 컨테이너 이미지

객체 생성 변수 클래스 이름 객체 참조 변수(object reference variable) 기본 타입 값 혹은 객체에 대한 참조를 저장한다. int num; 정수값을 저장할 수 있는 변수 num을 생성 클래스 이름 객체 참조 변수선언을 위한 타입 이름에는 클래스 이름이 들어간다. String title; String객체에 대한 참조(reference)를 저장하는 String변수 title을 하나 생성 이 선언으로 객체가 생성되는 것은 아님! 객체변수는 객체 그 자체를 저장하는 것이 아니라 객체의 주소를 저장 객체 참조 변수(object reference variable) 객체의 주소 저장 객체 자체는 별도로 생성되어야 한다. =>new

title = new String ("Java Software Solutions"); 객체 생성 new 연산자 사용하여 객체 생성 실체화(instantiation) 객체 생성 =>객체는 클래스의 실체(instance)이다. title = new String ("Java Software Solutions"); String 구성자 호출: 객체를 구성하는 특수 메쏘드

메쏘드 호출(Method invocation) 도트 연산자(dot operator ) 객체 생성 후에 도트 연산자를 사용하여 메쏘드 호출 count = title.length() 메쏘드는 값을 반환(return) 할 수 있다. 반환 값은 배정 혹은 수식에서 사용됨 메쏘드 호출 객체에 서비스를 요청하는 것으로 생각할 수 있다. title = new String ("Java Software Solutions"); String title; title=new String(“Java Software Solutions”); String title=new String(“Java Software Solutions”); String title; title=“Java Software Solutions”; String은 기본데이터타입은 아니나 많이 사용되기때문에 new를 생략하고 사용 가능 String title=“Java Software Solutions”;

참조(Reference) 비교 객체 참조 38 num1 "Steve Jobs" name1 기본 타입 변수는 값을 저장하고 객체 참조 변수는 객체의 주소를 저장한다. 객체 참조 객체의 위치에 대한 포인터로 생각할 수 있다. 주소로 표시하는 대신에 화살표를 사용한다. 38 num1 "Steve Jobs" name1

배정(Assignment) Before: After: 배정은 값을 복사하여 변수에 저장한다. 기본 타입: 38 num1 96 num2 = num1; num1 38 num2 After:

참조 배정(Reference Assignment) 객체 참조 배정은 주소를 복사하여 저장한다 ! "Steve Jobs" name1 Before: "Steve Wozniak" name2 name2 = name1; "Steve Jobs" name1 After: name2

별명(Alias) 별명 별명은 유용하지만 조심해야 한다 ! 한 객체를 참조하는 두 개 이상의 참조 변수들 한 객체를 여러 참조 변수들을 이용하여 접근할 수 있다. 별명은 유용하지만 조심해야 한다 ! 실제로는 한 객체만 존재하므로 어떤 참조를 통해 그 객체를 변경하면 다른 모든 이명 참조들도 변경하게 된다. * name1과 name2는 별명(alias)

쓰레기 수집(Garbage Collection) 객체에 대한 유효한 참조가 없으면 더 이상 사용될 수 없다. 이 객체는 쓰레기가 된다. 자동 쓰레기 수집 Java는 정기적으로 자동 쓰레기 수집을 하여 사용되지 않는 메모리를 시스템에 돌려준다. 다른 언어의 쓰레기 수집 프로그래머가 직접 해야 한다.

Outline 객체 생성 String 클래스 패키지 출력 포맷 열거 타입 포장 클래스 컴포넌트와 컨테이너 이미지

String 클래스 스트링 생성 title = "Java Software Solutions"; new 연산자 없이 String 객체를 생성할 수 있다. title = "Java Software Solutions"; 이것은 스트링에만 적용되는 특별한 경우 " … "은 String 객체를 나타낸다. title = new String("Java Software Solutions");

String 메쏘드 String 객체가 생성되면 값도 길이도 변경할 수 없다. => 메소드를 통해야만 가능 String 객체는 변경 불능(immutable) String 클래스의 어떤 메쏘드는 변경된 스트링을 반환 - 125페이지 [그림3.1] String toLowerCase ( ) String replace (char oldChar, char newChar) String substring (int offset, int endIndex) String concat (String str)

String 인덱스(첨자) 스트링 내의 특정 문자 참조 스트링 "Hello" 인덱스를 사용해서 인덱스는 0부터 시작

StringMutation.java public class StringMutation {    public static void main (String[] args)    { String phrase = "Change is inevitable";       String mutation1, mutation2, mutation3, mutation4;       System.out.println ("Original string: \"" + phrase + "\"");       System.out.println ("Length of string: " + phrase.length());       mutation1 = phrase.concat (", except from vending machines.");       mutation2 = mutation1.toUpperCase();       mutation3 = mutation2.replace ('E', 'X');       mutation4 = mutation3.substring (3, 30);       System.out.println ("Mutation #1: " + mutation1); // 변형된 각 스트링을 프린트한다       System.out.println ("Mutation #2: " + mutation2);       System.out.println ("Mutation #3: " + mutation3);       System.out.println ("Mutation #4: " + mutation4);       System.out.println ("Mutated length: " + mutation4.length());    } }

Outline 객체 생성 String 클래스 패키지 출력 포맷 열거 타입 포장 클래스 컴포넌트와 컨테이너 이미지

Class 라이브러리 클래스 라이브러리(class library) 프로그램 개발을 지원하는 클래스들의 모음 Java 표준 클래스 라이브러리(standard class library) Java 개발 환경의 일부 System , Scanner, String 도 클래스 라이브러리에 속해있음

패키지(Package) Java 표준 클래스 라이브러리는 패키지로 조직된다. 일부 패키지들 패키지 java.lang 129페이지 [그림3.2] 참조 패키지 java.lang java.applet java.awt javax.swing java.net java.util javax.xml.parsers 목적 일반적인 지원 애플릿 그래픽/그래픽 사용자 인터페이스 추가 그래픽 기능 네트워크 통신 유틸리티 XML 문서 처리

import 선언 패키지 내의 클래스 사용 패키지 내의 모든 클래스 전입 import java.util.*; 이름을 완전 지정(fully qualified name) java.util.Scanner 형태로 Scanner클래스를 사용할 때마다 패키지 와 클래스이름을 완전히 지정하는 일은 무척 번거로움 import 후 클래스 이름만 사용 import java.util.Scanner; 패키지 내의 모든 클래스 전입 import java.util.*; Scanner 클래스 java.util.Scanner import 해야 함

Random 클래스 java.util.Random 의사난수 발생기 Random 객체는 종자 값(seed value)을 이용하여 복잡한 계산을 수행하여 난 수를 발생시킨다. 132페이지 [그림3.3] Random클래스의 메소드 참조

RandomNumbers.java // Random 클래스를 사용한 의사난수의 생성을 보여준다. import java.util.Random; public class RandomNumbers {    //----------------------------------------------------------------    //  다양한 범위에 속하는 난수를 발생    public static void main (String[] args)    {       Random generator = new Random();       int num1;       float num2;       num1 = generator.nextInt();       System.out.println ("A random integer: " + num1);       num1 = generator.nextInt(10);       System.out.println ("From 0 to 9: " + num1);

RandomNumbers.java num1 = generator.nextInt(10) + 1;       System.out.println ("From 1 to 10: " + num1);       num1 = generator.nextInt(15) + 20;       System.out.println ("From 20 to 34: " + num1);       num1 = generator.nextInt(20) - 10;       System.out.println ("From -10 to 9: " + num1);       num2 = generator.nextFloat();       System.out.println ("A random float (between 0-1): " + num2);       num2 = generator.nextFloat() * 6;  // 0.0 to 5.999999       num1 = (int)num2 + 1;       System.out.println ("From 1 to 6: " + num1);    } }

Math 클래스 Math 클래스 수학 함수 java.lang 패키지의 일부 다양한 수학 함수 포함 절대값(absolute value) 제곱근(square root) 지수승(exponentiation) 삼각함수(trigonometric function)

value = Math.cos(90) + Math.sqrt(delta); Math 클래스의 메쏘드는 정적 메쏘드(static method) 정적 메쏘드 new를 이용하여 객체 생성 없이 클래스 이름을 통해서 호출 가능 value = Math.cos(90) + Math.sqrt(delta); 정적메소드는 6장에서 자세히 배웁니다. 134페이지 [그림3.4] Math클래스의 메소드들

Quadratic.java import java.util.Scanner; public class Quadratic {    //  이차방정식의 근을 결정한다.    public static void main (String[] args)    {       int a, b, c;  // ax^2 + bx + c       double discriminant, root1, root2;       Scanner scan = new Scanner (System.in);       System.out.print ("Enter the coefficient of x squared: ");       a = scan.nextInt();       System.out.print ("Enter the coefficient of x: ");       b = scan.nextInt(); System.out.print ("Enter the constant: "); c = scan.nextInt(); discriminant = Math.pow(b, 2) - (4 * a * c);       root1 = ((-1 * b) + Math.sqrt(discriminant)) / (2 * a);       root2 = ((-1 * b) - Math.sqrt(discriminant)) / (2 * a);       System.out.println ("Root #1: " + root1);       System.out.println ("Root #2: " + root2);    } }