Lesson 7. 클래스와 메소드 - 1.

Slides:



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

어서와 Java는 처음이지! 제3장선택과 반복.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
클래스 구성 요소 1개의 클래스는 최대 8개의 구성 요소를 가질 수 있다
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
컴퓨터 프로그래밍 기초 [Final] 기말고사
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
스택과 힙 지역변수와 인스턴스 변수 객체 생성과 생성자 객체 제거 (가비지 컬렉션)
Chapter 4. 클래스와 객체 PS Lab. 이지연.
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
Java 기초 (Java JDK 설치 및 환경설정)
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
5장. 참조 타입.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
자바 프로그래밍 기초 5장. 객체 지향 언어와 클래스, 객체 hanbitbook.co.kr.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
3장 자바의 기본문법(2).
Java 6장. 클래스 : 속성 public class SumTest {
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
[INA470] Java Programming Youn-Hee Han
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Java 9장. 인터페이스와 예외처리 public class SumTest {
Method & library.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
JA A V W. 06.
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
12. 상속 : 고급.
Java Programming Java Programming 3장 백석대학교 인터넷멀티미디어 LAB1111호.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 6 장 함수(functions).
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
3장 자바의 기본문법(2).
Presentation transcript:

Lesson 7. 클래스와 메소드 - 1

메모리 가격과 프로그래밍 기법의 변화

객체지향기법의 3R 가독성(Readability) 재사용성(Reusability) 신뢰성(Relability)

클래스의 객체 생성 Book myBook= new Book(); 객체 new

클래스의 정의와 사용 class 클래스이름 [ extends 수퍼클래스이름 ] { // 멤버변수 // 메소드 // 생성자 } 클래스 헤더 클래스 바디 멤버변수 메소드 class 클래스이름 [ extends 수퍼클래스이름 ] { // 멤버변수 // 메소드 // 생성자 } 예 class Point int x; int y; public void printXY() System.out.println("x: "+ x +", y: "+ y); Point p1 = new Point(); p1.x = 10; p1.y = 20; p1.printXY(); (클래스 내부에 정의된 변수)

생성자 Stack s = new Stack( 5 ); class Stack { public Stack(int x)  생성자 클래스이름 변수 클래스이름 인수     Stack s = new Stack( 5 ); class Stack { public Stack(int x)  생성자 // ... } 생성자에게 전달 생성자가 반드시 지켜야만 할 규칙 생성자의 이름은 클래스의 이름과 같아야 함 반드시 public으로 선언 반환형은 선언하지 않는다.

가비지 콜렉션 String s= new String("Hello"); s= null; 더 이상 사용이 불가능한 객체 백그라운드로 Garbage Collector가 같이 실행 Garbage Collector: 프로그램이 사용하는 메모리영역을 조사, 더 이상 사용하지 않는 객체들을 자동으로 삭제시킴

자바의 패키지 패키지 사용 선언 패키지 내의 클래스 사용 import java.util.Date; // java.util 패키지의 Date 클래스 사용 선언 import java.util.*; // java.util 패키지의 모든 클래스 사용 선언 패키지 내의 클래스 사용 Date today= new Date(); // 패키지 사용을 선언한 경우 java.util.Date today= new java.util.Date(); // 패키지 사용을 선언하지 않은 경우

패키지 만들기 - 1 패키지 디렉토리 생성(MyPackage) 패키지에 포함되는 클래스 앞에 패키지 선언(MyClass.java) package MyPackage; 또는 package MyPackage.util;   패키지선언 패키지이름 패키지 사용하는 클래스에서 선언(PackageTest.java) import MyPackage.*;

패키지 만들기 - 2 컴파일과 실행 C:\JAVA> javac MyPackage\MyClass.java C:\JAVA> javac PackageTest.java C:\JAVA> java PackageTest

Call by Value 인수 전달 10 20 x y temp a b 1 : public class CallByValue 2 : { 3 : public static void swap(int x, int y) 4 : { 5 : int temp= x; // x값을 보관 6 : x= y; 7 : y= temp; 8 : } 9 : 10 : public static void main(String[] args) 11 : { 12 : int a= 10; 13 : int b= 20; ... 17 : swap(a, b); // x에는 a, y에는 b값이 전달 20 : } 21 : } 10 20 x y temp a b

전역 변수를 이용한 인수 전달 temp 10 20 a b 1 : public class GlobalValue 2 : { 3 : static int a; // 전역변수로 선언된 a, b 4 : static int b; 5 : 6 : public static void swap() 7 : { 8 : int temp= a; 9 : a= b; // 전역변수에 바로 저장 10 : b= temp; 11 : } 13 : public static void main(String[] args) 14 : { 15 : a= 10; 16 : b= 20; ... 20 : swap(); // 인수 없이 호출 temp 10 20 a b

Call by Referece 인수 전달 temp 10 20 x y z n 1 : public class CallByReference 2 : { 3 : public static void swap(Number z) 4 : { 5 : int temp= z.x; 6 : z.x= z.y; 7 : z.y= temp; 8 : } 10 : public static void main(String[] args) 11 : { 12 : Number n= new Number(); 13 : n.x= 10; 14 : n.y= 20; ... 18 : swap(n); 21 : } 22 : } temp 10 20 x y Number 객체 z n

인수 전달의 바른 이해 1 : class MyClass 2 : {  2 : {  3 :   public static void main(String[] args)  4 :   {  5 :     StringBuffer sb1= new StringBuffer("top");  6 :     StringBuffer sb2= new StringBuffer("top");  7 :     convert(sb1, sb2);  8 :     System.out.println("sb1 is "+ sb1 +"\tsb2 is "+ sb2);  9 :   } 10 : 11 :   public static void convert(StringBuffer sb1, StringBuffer sb2) 12 :   { 13 :     sb1.insert(0, 's'); 14 :     sb2= sb1; 15 :   } 16 : } sb1 stop sb2 top

재귀적 메소드 호출 되부름 호출, 메소드가 자기 자신을 호출 1 : public class RecursiveCall 2 : { 3 : public static int power(int x, int y) 4 : { 5 : if(y<=0){ 6 : return 1; 7 : }else{ 8 : return x * power(x, y-1); // x를 y번 곱함 9 : } 10 : } 11 : 12 : public static void main(String[] args) 13 : { ... 15 : System.out.println("power(2,2) : "+ power(2,2)); 2 x y 1 y-1 2*1 2*2

메소드 오버로딩 하나의 같은 클래스 내에서 같은 이름을 가진 다수의 메소드가 존재 가능한 것을 의미 하나의 같은 클래스 내에서 같은 이름을 가진 다수의 메소드가 존재 가능한 것을 의미  오버로딩된 메소드들은 매개 변수의 데이터형, 또는 개수가 반드시 달라야 함. 동일한 클래스이든 상위 클래스이든 메소드 앞에 static으로 정의된 정적 메소드가 아니면 오버로딩 가능. 즉, static으로 정의된 정적 메소드는 오버로딩시킬 수  없음 메소드의 오버로딩은 객체지향에서의 다형성(polymorpism) 개념을 적용하고 있음.

메소드 오버로딩 int add(int x, int y) { return(x+y); } double add(double x, double y) ... i = add(10, 20); d = add(10.5, 20.4); k = add(10, 20.4);

main() 메소드와 인수 java Hello AB CD EFG public static void main(String[] args) { ...

메소드의 정의 반환형 메소드이름 ( [ 매개변수, 매개변수, ... ] ) { // 명령어들 } 예 int add(int x, int y) z = add(10, 20); return (x+y); 메소드 헤더 메소드 바디 반환형 매개변수