Download presentation
Presentation is loading. Please wait.
Published byBernice Davis Modified 6년 전
1
2009. 10. 16 Choi, Namseok http://sugi.pe.kr
Java 기초 (객체와 클래스) Choi, Namseok
2
Last 자바의 조건문(제어문) 자바의 반복문 자바의 배열
3
Contents 객체지향 프로그래밍, 객체, 클래스의 개념 클래스의 구조 객체 생성 멤버 변수 메소드 생성자 this 키워드
패키지
4
객체지향 프로그래밍, 객체, 클래스의 개념 객체지향 프로그래밍 객체의 개념 클래스의 개념
5
객체지향 프로그래밍 자바, C++, C# 이 객체지향 언어 하나의 프로그램을 독립적 단위별로 나누어 설계, 필요시 통합
필요 부분만 수정하므로 개발 편리 절차지향 프로그래밍에 비해 부분으로 분해하여 프로그래밍
6
객체지향 프로그래밍 절차지향 객체지향
7
객체지향 프로그래밍 객체지향에서의 클래스는 함수와 변수의 묶음으로 클래스 단위 로 설계 절차지향 객체지향
8
객체지향 프로그래밍 캡슐화(encapsulation)는 코드를 보호하는 역할을 합니다.
클래스(class)는 동일한 객체들의 집합체이며 객체의 원형 (prototype)입니다. 추상화(abstraction)란 객체가 자신의 정보를 은폐(은닉이라고 도 함. information hiding)하고, 외부적으로는 추상적인 내용만 알려주는 것을 말합니다. 상속(inheritence)이란, 기존에 이미 만들어져 있는 객체의 변수 와 메소드를 물려받아 다른 새로운 객체를 만드는 것으로 재사용 성(reusability)을 얻을 수 있습니다. 다형성(polymorphism)이란 부모 객체로부터 상속받아 전혀 새 로운 결과물을 산출합니다.
9
객체의 개념 현실세계에 존재하는 모든 것 명사로서의 성질을 지닌 것 객체 = 변수 + 메소드 변수 : 객체의 속성 표현
메소드 : 객체의 기능 표현 정의된 객체는 다른 프로그래밍에서 재사용 가능
10
객체의 개념 학생 객체
11
클래스의 개념 같은 기능의 객체 여러 개 필요 여러 개의 객체를 표현하기 위해 같은 변수와 메소드도 여러 개 필요
여러 개의 객체를 표현하기 위해 같은 변수와 메소드도 여러 개 필요 필요한 변수와 메소드를 한번만 정의하고 필요시 복사하여 재사 용 필요 여러 개의 동일 구조를 가지는 객체를 생성하기 위해 사용되는 틀
12
클래스의 개념
13
클래스의 구조 클래스의 작성 클래스 선언부 클래스 멤버부 자바 modifier
14
클래스의 작성 모든 객체 표현 이전에 클래스 정의 자바 언어의 프로그램 단위
필요 변수와 메소드 정의하고 클래스 이름과 같은 파일에 저장 B 클래스가 A 클래스 객체 생성하여 A 클래스에 정의된 변수와 메소드 사용
15
클래스 선언부 클래스 구조 클래스 선언부 형식
16
클래스 선언부 클래스 선언부 형식 class 키워드와 클래스이름 반드시 기술
modifier는 클래스 활용 방법, 접근 권한 지정 extends 부분은 상속 표현 implements 부분은 인터페이스 구현
17
클래스 멤버부 클래스의 멤버부는 멤버 변수, 메소드, 생성자로 구성 멤버 변수 : 클래스가 가지는 속성을 정의
생성자(constructor) : 객체의 초기화 담당 메소드 (method) : 클래스가 가지는 데이터를 조작하고 변환 필요시에 멤버 변수와 생성자, 메소드 등에도 modifier를 기술
18
자바 modifier 접근 범위나 활용 방법 지정하는 키워드들
19
자바 modifier 클래스의 modifier
20
객체 생성 객체 생성 문장의 구성 요소 객체 생성 문장과 자바의 메모리 구조
21
객체 생성 문장의 구성 요소 클래스 정의 후에는 객체 생성 학생 클래스 정의 객체 참조 변수 선언
22
객체 생성 문장의 구성 요소 객체 생성 객체 생성 과정
23
객체 생성 문장과 자바의 메모리 구조 Student 객체 생성시 메모리 구조
24
객체 생성 문장과 자바의 메모리 구조 실습 Class : Exam_01 public class Exam_01{
public static void main(String args[]){ Student choi = new Student(); sugi.name = “sugi"; sugi.age = 20; //sugi.number = ; System.out.println("한 학생의 이름은 "+ sgui.name + "이고, 나이는 “ + sugi.age + "입니다"); } class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */
25
멤버 변수 멤버 변수의 개념 멤버 변수의 구성 요소 public, protected, private modifier
static modifier final modifier
26
멤버 변수의 개념 메서드 외부에 선언하는 변수 객체의 속성 표현 지역변수는 특정 블록({}) 내부에서만 사용 가능
27
멤버 변수의 구성 요소 멤버변수 구성 요소 멤버변수의 modifier
28
public, protected, private modifier
캡슐화와 정보 숨김 구현 멤버 변수의 접근 modiifer
29
public, protected, private modifier
number : 외부에서 참조 불가능 records : 하위 클래스 참조 가능 name : 모든 클래스 참조 가능
30
static modifier static 변수 또는 클래스 변수 해당 클래스의 모든 객체들이 하나의 클래스 변수 공유
클래스 로딩 시기에 메모리에 한번만 할당 객체들 사이의 공통 속성 표현 클래스 이름을 통하여 접근 가능
31
static modifier 클래스 변수의 활용
32
static modifier static 변수와 non-static 변수 비교
33
static modifier 실습 Class : Exam_02 class Exam_02{
public static void main(String args[]){ Person.nation = "대한민국"; Person p1 = new Person(); p1.name = "이자바"; p1.age = 23; Person.count++; System.out.println("p1 이 참조하는 사람 객체의 이름은 " + p1.name + " 이고 나이는 " + p1.age + " 이며 국적은 “ + p1.nation + " 입니다."); Person p2 = new Person(); p2.name = "박이한"; p2.age = 21; System.out.println("p2 가 참조하는 사람 객체의 이름은 " + p2.name + " 이고 나이는 " + p2.age + " 이며 국적은 " + p2.nation + " 입니다."); System.out.println ("생성된 사람 객체의 수는 " + Person.count + " 명입니다."); }
34
// Person 클래스를 선언한다. class Person { String name; /* 이름 */ int age; /* 나이 */ static int count = 0; /* 사람의 수 */ static String nation; /* 국적 */ }
35
final modifier 프로그램 내에서 한번 초기화된 후 값의 수정 불가능한 상수 final 변수의 경우
객체 공유 값 변경 불가능한 static 변수 절대 불변의 진리 값 표현 변수 자바 언어의 정해진 규칙에 의해 얻어진 값을 표현하는 변수 final 변수의 예 // Person 클래스를 선언한다. class Person { String name; /* 이름 */ int age; /* 나이 */ static int count = 0; /* 사람의 수 */ final static String nation = "대한민국"; /* 국적 */ }
36
메소드 메소드 선언부 return 문과 리턴 타입 메소드 구현부
public, protected, private modifier static modifier 매개변수의 개념과 매개변수 전달 원리 메소드 overloading
37
메소드 선언부 메소드 선언부의 구성 요소
38
메소드 선언부 메서드의 modifier
39
return 문과 리턴 타입 메소드 이름 앞에 오는 필수 요소 메소드 수행 후 복귀하면서 전달하는 값의 데이터 타입
int 데이터 리턴하는 메서드 호출 예
40
return 문과 리턴 타입 String 데이터 리턴하는 메소드 호출 예 리턴값이 없는 메소드 호출 예
41
return 문과 리턴 타입 return의 다른 예 return 문의 용도
42
메소드 구현부 private 변수 접근하는 public 메소드 필요 : 캡슐화 표현
43
메소드 구현부 사원 이름 출력 등 기능 반복적 필요하면하나의 메소드로 정의하 고 호출
44
메소드 구현부 실습 Class : Exam_03 class Exam_03 {
public static void main(String args[]) { Student lee = new Student(); lee.setName("이자바"); lee.print(); Student kim = new Student(); kim.setName("김대한"); kim.print(); Student park = new Student(); park.setName("박민국"); park.print(); }
45
class Student { String name; private int number; int age; String title; String dept; protected String grade; // 이름 정보를 설정하고 추출하는 메서드를 선언한다. public void setName(String name){ this.name = name; } public String getName(){ return this.name; public void print(){ System.out.println("학생의 이름은 "+ name + " 입니다.");
46
public, protected, private modifier
캡슐화와 정보 숨김 구현 메소드의 접근 modiifer
47
static modifier static 메소드는 클래스 메소드 클래스 이름으로 접근
객체 생성 이전 단계인 클래스 로드시에 메소드 사용 가능 객체 변수 사용 불가능 클래스 변수만 사용하는 경우 필요
48
static modifier 실습 Class : Exam_04 class Exam_04 {
public static void main(String args[]) { StaticClass.m1(); //StaticClass.m2(); StaticClass o1 = new StaticClass(); StaticClass o2 = new StaticClass(); o1.m1(); o1.m2(); o2.m1(); o2.m2(); } class StaticClass { static int a=10; int b=20; static void m1(){ System.out.println(a++); //System.out.println(b++); void m2(){ System.out.println(b++); 실습 Class : Exam_04
49
매개변수의 개념과 매개변수 전달 원리 메소드나 생성자 정의시 부가 정보는 매개변수로 정의하여 전달
메소드 정의시 필요 정보의 타입과 개수, 순서 정의는 형식매개 변수임 메소드 호출시에 형식매개변수로 전달하는 실제 매개변수는 실 매개변수임
50
매개변수의 개념과 매개변수 전달 원리 자바 언어에서 메소드 호출시에 매개변수 전달 방법은 call by value임
기본형 변수는 실제값 전달 참조형 변수는 객체의 주소값 전달
51
매개변수의 개념과 매개변수 전달 원리 기본형 변수의 매개변수 전달
52
매개변수의 개념과 매개변수 전달 원리 참조형 변수의 매개변수 전달
53
매개변수의 개념과 매개변수 전달 원리 실습 Class : Exam_05 class Exam_05 {
public static void main(String args[]) { Exam_05 e = new Exam_05(); int j=10; e.add(j); System.out.println ("main에서 add(j) 호출 후 : " + j); Sample t = new Sample(); e.add(t); ("main에서 add(t) 호출 후 : " + t.a); } //기본형 변수 i 를 매개변수로 가지는 add 메서드 void add(int i) { System.out.println(i++); //참조형 변수 s 를 매개변수로 가지는 add 메서드 void add(Sample s) { System.out.println(s.a++); class Sample{ int a=10; 실습 Class : Exam_05
54
메소드 overloading 하나의 클래스 내부에 같은 이름의 메서드 정의 가능 매개변수 리스트 다르게 정의
매개변수 타입이나 개수, 또는 순서 중 하나가 다르게 정의 객체지향언어의 다형성 지원
55
메소드 overloading java.lang.Integer.parseInt() 메서드 overloading
56
메소드 overloading 실습 Class : Exam_06 class AddTest {
int add(int i, int j) { return i + j; } String add(String i, String j) { double add(double i, double j) { class Exam_06 { public static void main(String args[]) { AddTest at = new AddTest(); String res1 = at.add("java", "program"); double res2 = at.add(2.56, 1.10); int res3 = at.add(10, 20); System.out.println("문자열 결합의 결과 : " + res1); System.out.println("실수 덧셈의 결과 : " + res2); System.out.println("정수 덧셈의 결과 : " + res3);
57
생성자 생성자의 개념과 특징 생성자의 구성 요소 public, protected, private modifier
생성자와 객체생성 생성자 overloading
58
생성자의 개념과 특징 객체 생성시 객체 초기화 과정 기술하는 특수한 메소드 객체 생성 문장의 구조 new 연산자 뒤에서 호출
59
생성자의 개념과 특징 생성자의 특징 메소드처럼 리턴 타입을 설정하지 않습니다.
클래스에 대한 객체를 생성할 때 초기화를 담당합니다. 자바 클래스는 자동으로 기본 생성자(default constructor)가 존재 하므로 생성자가 필요 없으면 반드시 프로그래머가 정의할 필요는 없습니다. 생성자 overloading을 지원합니다. super(), this()와 같은 특수한 형태의 생성자가 존재합니다.
60
생성자의 구성 요소 생성자의 구성 요소 리턴 타입이 없고 클래스와 이름이 같은 점이 형태상 메소드와 구별
61
public, protected, private modifier
default : 생성자 생략한 상태로 같은 패키지 내부에서 접근
62
생성자와 객체생성 기본 생성자가 모든 클래스에 자동 포함 기본 생성자 형태 기본 생성자 이용 예
63
생성자와 객체생성 명시적 생성자 정의 후에 기본 생성자 자동 상실 명시적 생성자 이용 예
64
생성자와 객체생성 실습 Class : Exam_07 public class Exam_07{
public static void main(String args[]){ /* Student lee = new Student(); lee.name = "이자바"; lee.age = 20; System.out.println ("한 학생의 이름은 "+ lee.name + "이고, 나이는 "+ lee.age +" 입니다"); */ Student kim = new Student("박대한", 22); ("한 학생의 이름은 "+ kim.name + "이고, 나이는 "+ kim.age +" 입니다"); } class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String n, int a){ name = n; age = a; }
65
생성자 overloading 하나의 클래스에서 같은 이름의 생성자 여러 개 정의 가능
생성자의 매개변수 타입, 개수, 순서 다르게 정의
66
생성자 overloading 3가지 형태의 객체 생성 가능
67
생성자 overloading 실습 Class : Exam_08 class Student {
String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String n, int a) { name = n; age = a; } //이름만 초기화하는 생성자 정의 Student(String n) { age = -1; //기본 생성자 정의 Student() { name = "none"; 실습 Class : Exam_08 public class Exam_08 { public static void main(String args[]) { Student lee = new Student(); System.out.println ("한 학생의 이름은 "+ lee.name + "이고, 나이는 "+ lee.age +" 입니다"); Student park = new Student("박이한"); ("한 학생의 이름은 "+ park.name + "이고, 나이는 "+ park.age +" 입니다"); Student kim = new Student("김대한", 22); ("한 학생의 이름은 "+ kim.name + "이고, 나이는 "+ kim.age +" 입니다"); }
68
this 키워드 this 키워드의 개념 this 키워드와 멤버 변수 this 키워드와 생성자 호출
69
this 키워드의 개념 this 키워드는 메시지 전달받은 객체 this 키워드는 형태 실행 중인 클래스 타입의 객체
매개 변수나 지역 변수 이름이 객체 변수 이름과 같을 때 구분 같은 클래스 내의 다른 생성자 호출
70
this 키워드와 멤버 변수 this 키워드를 이용하여 객체 변수 구별
71
this 키워드와 멤버 변수 class Student { String name; /* 이름 */
int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String name, int age){ this.name = name; this.age = age; } //이름만 초기화하는 생성자 정의 Student(String name){ age = -1; //기본 생성자 정의 Student(){ this("none");
72
패키지 패키지의 개념 import 키워드 package 키워드
73
패키지의 개념 관련 클래스와 인터페이스 저장 폴더 패키지 사용 이유
같은 이름의 클래스 충돌 회피 관리 용이 클래스 접근 권한을 패키지 단위로 제어 API 는 패키지화 구조로 제공되며 1.5 버전의 경우 150여개 패 키지 제공 도트(.)로 표현
74
import 키워드 패키지화된 클래스 사용 자동 import 사용 형태 같은 패키지의 클래스 사용
java.lang 패키지의 클래스 사용 사용 형태 패키지 이름만 사용하여 import 클래스 이름 포함하여 import
75
import 키워드 패키지화된 클래스 사용 import 사용하지 않음 import 사용함
76
import 키워드 실습 Class : Exam_09 import java.text.DateFormat;
import java.util.Date; class Exam_09 { public static void main(String args[]) { Date d = new Date(); DateFormat df = DateFormat.getDateInstance(); System.out.println ("현재 시간은 " + df.format(d) + " 입니다."); }
77
package 키워드 클래스의 패키지화시에 사용 자바 소스 파일의 첫번째 문장으로 사용
78
Summary 객체란 실세계에서 명사로 표현할 수 있는 사물이며 자바 프로그 램에서 하나의 소프트웨어적인 단위입니다.
클래스는 클래스의 선언부와 몸체로 나누어지고 몸체에는 멤버 변수 부분과 객체의 초기화를 담당하는 생성자, 데이터를 조작하 고 변환하는 메소드로 구성됩니다. 클래스와 클래스 내부의 구성 요소 선언 시에는 modifier를 이 용하여 요소별 접근 권한과 사용 방법을 지정할 수 있습니다. static 변수는 특정 클래스 타입의 모든 객체가 공통적인 값을 공 유하여 사용하는 경우 선언합니다. 클래스 이름을 통해 접근 가 능합니다.
79
Summary final 변수는 클래스 내부에서 변수의 값을 수정하지 못하도록 설 정합니다. 주로 절대 불변의 진리값이나 공통적으로 사용하는 변 수 앞에 붙여 사용합니다. 객체의 동적인 특징과 행동을 정의한 부분인 메소드를 메소드의 접근 권한과 특성에 맞도록 선언할 수 있습니다. 메소드의 리턴 타입은 메소드가 수행 종료된 후 리턴하는 값의 데이터 타입을 지정하는 것으로 메소드 선언부의 메소드 이름 앞 에 기술해야 합니다. 매개변수 값의 전달에는 call by value 방식을 사용하며 기본형 변수는 실제 값이 전달되고, 참조형 변수는 주소 값이 복사되어 전달됩니다.
80
Summary 하나의 클래스 내부에 같은 이름의 메소드를 여러 개 정의하되 매개변수 리스트가 다르게 정의하여 메소드를 overloading 할 수 있습니다. 생성자는 클래스로부터 객체를 생성할 때 객체의 초기화 과정을 기술하는 특수한 메소드로 일반 메소드와 비슷하면서도 메소드 와는 다르게 클래스와 이름이 동일하고 리턴 타입이 없는 특징을 가지고 있습니다. 생성자는 메소드처럼 매개변수 리스트를 다르게 하여 overloading 할 수 있으며 이는 객체 생성 시에 여러 생성자 중 선택적으로 호출 가능하다는 의미입니다.
81
Summary this 키워드는 현재 객체를 의미하는 자바 키워드로, 멤버 변수와 매개변수, 또는 지역 변수 이름이 동일할 때 구분하거나 this() 문장처럼 생성자를 호출할 때 사용합니다. 패키지란 관련된 클래스들을 모아놓은 구조로, 물리적으로는 폴 더 또는 디렉터리와 유사합니다. 패키지는 도트 (.)를 이용하여 표현합니다. import 예약어에 패키지 이름을 명시하면, 컴파일러가 이 클래 스들의 패키지 이름을 인식하여 해당 클래스를 찾게 됩니다.
Similar presentations