자바 프로그래밍 입문 : 객체지향적 사고법 chapter 03. 데이터형과 클래스.

Slides:



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

SCJP. Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 9. 예외처리.
Lesson 6. 형변환.
명품 Java Programming.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
자바 5.0 프로그래밍.
23장. 구조체와 사용자 정의 자료형 2.
Lesson 7. 클래스와 메소드 - 1.
14. 예외처리.
10장. 예외처리.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C#.
7장 인터페이스와 추상 클래스.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
[ 단원 02 ] 자바 프로그래밍 기초.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
[ 단원 04 ] 반복과 배열.
자바 5.0 프로그래밍.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
발표자 : 이지연 Programming Systems Lab.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
제 4 장 Record.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
2장 자바의 기본문법(1).
자바 객체 지향 프로그래밍 Ps lab 김윤경.
7 생성자 함수.
6 객체.
Presentation transcript:

자바 프로그래밍 입문 : 객체지향적 사고법 chapter 03. 데이터형과 클래스

학습목표 기본적인 키워드와 식별자 이해 대괄호, 세미콜론, 콤마 등의 사용법 이해 데이터를 저장하고 연산하는 방법을 이해 동의대 김미진

자바 프로그램 구조 자바 프로그램은 여러 개의 클래스로 구성된다 동의대 김미진

자바 프로그램 구조 예제 // 데이터 영역 // 메소드 영역 // 프로그램 로직 (메소드 내부) i = 10000000; 결과 동의대 김미진

자바 언어의 기본 요소 – 키워드 키워드 예약어 (reserved word) 기본 데이터형과 비교문, 반복문 등 문장 사용하는 특별한 약속 최근에 만들어진 언어로 키워드가 많음 사용자가 임의로 붙이는 식별자와 비교됨 자바 키워드는 전부 소문자임 같은 문자로 대문자를 이용하면 키워드가 아니라 식별자임 키워드는 ASCII 형태로 정의 동의대 김미진

키워드 목록 abstract double int strictfp ** boolean else interface super break extends long switch byte final native synchronized case finally new this catch float package throw char for private throws class goto * protected transient const * if public try continue implements return void default import short volatile do instanceof static while *는 현재사용되고 있지 않음. **는 Java2부터 적용되기 시작함 동의대 김미진

키워드 예제 public class null int return EX03_01 String name age getName 식별자 EX03_01 String name age getName setName getAge SetAge 동의대 김미진

키워드 분류 목록 기본데이터형 byte, short, char, int, float, double, void 흐름제어문 if, else, do, while, for, break, continue, return, case, switch, default 영역 결정 public, protected, private 특성 abstract, final, synchronized, native, transient, volatile 예외처리 throws, try, throw, catch, finally 상하위 클래스 관련 this, super 패키지 관련 package, import 객체 생성 new 데이터형 관련 instanceof 영역결정의 default는 키워드가 아니라 생략할 경우 기본 영역으로 설정 (p61 오류) 동의대 김미진

자바 언어의 기본 요소 - 식별자 식별자 데이터 또는 데이터의 주소를 의미함 이와 관련된 사항은 컴파일러와 자바 가상 머신이 처리 프로그래머는 이름을 정하고 연산자를 이용하면 됨 변수뿐 아니라 클래스의 이름이나 메소드 이름도 이용 동의대 김미진

식별자 예제 동의대 김미진

식별자 정의에 대한 몇 가지 규칙 ASCII 코드가 기본 유니코드 지원으로 한글, 한자 등도 사용 가능 식별자의 첫 글자는 숫자로 시작할 수 없음 식별자 중간에는 공백문자, %, #등을 사용 못함 단, $와 _는 사용 가능함 일반적으로, $, &등의 특수문자는 첫글자로 사용하지 않음 $와 _는 기존 언어에서 많이 사용하고 있기에 허용함. 동의대 김미진

자바 언어의 기본 요소 – 의미있는 기호 [1] 중괄호 (braces, { }) 세미콜론 (semicolon, ;) 한문장은 세미콜론 (;)으로 구별되고, 이들을 묶어서 하나의 문단 블록을 만드는데 적용 클래스 정의, 메소드 정의, 실행 문단 블록 정의에 사용 참고로, 대괄호([ ])는 배열의 요소를 나타낼 때 이용 세미콜론 (semicolon, ;) 한 문장은 C언어와 동일하게 개행 문자가 아닌, 세미콜론 (;)으로 구분 세미콜론이 없는 문장은 컴파일 오류 발생 프로그래머는 항상 세미콜론이 빠지지 않도록 주의할 것 동의대 김미진

자바 언어의 기본 요소 – 의미있는 기호 [2] 콤마 (comma, ,) 공백 (white space) 여러 개의 데이터를 순자적으로 구별 메소드에 사용되는 인자는 순서대로 구분 for와 같은 일부 키워드에서 콤마를 사용함 공백 (white space) 키워드와 식별자를 구별 소스의 구조를 명확하는데 사용하나 컴파일러는 하나 이상의 공백 문자가 연속해서 나올 경우에는 무시함 단, “ “ 안의 공백 문자는 실제 문자 데이터로 사용되므로 공백 문자가 아님 동의대 김미진

공백으로 취급되는 문자 개행 문자 (line feed, ‘\n’) 페이지 넘김 (form feed, ‘\f’) 탭 (tab, ‘\t’) 캐리지 리턴 (carriage return, ‘\r’) 하나 이상의 공백 문자(space, ‘ ’) 동의대 김미진

데이터 저장 메모리의 동작 메모리 관리는 자바 가상 머신이 수행 하지만, 내부적으로 메모리 동작을 이해해야지만 좋은 프로그래밍이 가능함 x y str String 객체 메모리

프로그램 실행 과정

메모리의 종류 속도에 따른 메모리 종류 레지스터 (register) – CPU 내부의 고속 기억장치 내부 기억장치 – RAM과 같이 CPU 버스와 직접 연결된 메인 메모리 스택 (stack) – 메소드와 변수를 위한 내부 기억장치 (RAM) 힙 (heap) – 객체 할당을 위한 내부 기억장치(RAM) 정적 메모리 (static memory) – 공유 메소드나 공유 변수 저장 상수 메모리 (constants pool) – 변경되지 않는 값을 저장 외부 기억장치 – 하드디스크, 플로피 디스크, 플래쉬 메모리와 같은 보조 기억장치

내부 (주) 기억장치 논리적 구조 주 기억장치는 물리적으로 정적메모리, 상수메모리, 힙, 스택을 구별하지 않는다.

프로그래밍에서의 메모리 할당과 해제 메모리가 할당되는 경우 메모리가 회수되는 경우 식별자 정의 저장 연산자 (=)를 이용하여 식별자에 값을 저장 객체 생성자 (new)를 이용하여 객체 생성 메모리가 회수되는 경우 메소드가 수행되고 리턴할 경우 생성된 객체의 참조 수가 0일 경우 자바 언어에서 메모리 회수는 프로그래머가 하지 않고, 자바 가상 머신의 가비지콜렉터가 담당

메모리의 종류 – 스택 (stack) 스택 (stack) 스택의 예 스택의 사용 현재 저장된 최근 위치만 가지고 운영되는 데이터 형태 데이터 저장 방식은 LIFO(last-in-first-out)으로 운영 스택의 예 여러 권의 책을 책상 위에 쌓아놓는 것 아래가 막힌 긴 원통에 공을 순서대로 넣고 빼는 것 엘리베이터에 사람들이 들어갔다가 나오는 것 스택의 사용 가변적으로 변하는 메소드 호출 후 실행 위치를 얻기 위하여 사용 메소드 내부에 선언된 지역 변수 할당 및 해제

메모리의 종류 – 힙 (heap) 힙 (heap) 힙의 예 힙의 사용 스택 메모리를 제외한 동적 메모리 계속 사용해야 하는 데이터는 힙에 할당 객체 생성이 되는 곳이 바로 힙 순차적인 메모리 접근이 아니며 랜덤하게 할당되고 해제 힙의 예 책꽂이에 책을 꽂아놓고 다시 빼는 경우 장롱에 옷을 걸어놓았다가 다시 빼는 경우 상자 높이와 동일한 물건을 넣고 빼는 경우 힙의 사용 객체의 생성은 new 키워드에 의해서 수행되어 힙에 할당 객체의 소멸은 가비지 콜렉터에 의해서 수행됨

상수 메모리 (constants pool) 메모리의 종류 – 정적 메모리와 상수 메모리 정적 메모리 (static memory) 프로그램 코드가 로딩 되는 영역 코드 영역은 메소드 로직을 결정하는 명령어 집합 코드 영역은 클래스당 하나씩 할당되어 객체 생성과 관계없이 메모리를 차지함 상수 메모리 (constants pool) 그 값이 한번 지정되면 변경되지 않는 메모리 보통 final 로 정의된 변수가 저장됨

변수와 메모리 변수 변수의 구분 객체 내부에서 필요한 데이터는 메모리에 저장 변수 식별자를 통하여 메모리 위치를 구별 변수의 데이터 종류는 변수 선언에서 결정 변수는 식별자의 일종 식별자 중 클래스 명과 메소드 명은 변수가 아님 변수의 구분 변수의 종류는 5가지 변수는 기본형 변수와 참조형 변수로 나뉨

식별자와 메모리 식별자 (변수) 메모리 공간의 특정 위치를 이용하기 위한 명칭 메모리 저장 공간은 식별자의 종류에 따라 힙 또는 스택에서 할당되고 반환 모든 변수는 생명주기 또는 적용범위를 가지고 있음 변수는 프로그램이 실행되는 동안에만 의미가 있음 일반적인 C언어에서는 특정 메모리 위치를 지정할 때 주소를 사용 자바도 유사하나 직접 메모리 주소를 이용할 수 없음 변수는 실제값을 지정하는 메모리 주소 이름 변수 이름 보다는 변수가 나타내는 값이 더 중요함 모든 변수는 기본 값을 가지고 있음 변수: 값이 변할 수 있는 메모리

변수의 종류 클래스 변수 상수 변수 객체 변수 지역 변수 static으로 정의된 변수 final로 정의된 변수 일반 변수 메소드 내부에 정의된 변수

변수의 종류 예제 클래스 변수 상수 지역 (메소드) 변수 객체 변수

데이터 형 데이터형 (data type)의 개념 프로그래밍 언어가 다룰 수 있는 데이터 종류를 결정 데이터의 표현, 저장, 연산에 대한 방법을 결정 모든 데이터는 결국 비트로 표현되나 인간이 이해하는 동일한 데이터도 데이터 형에 다라서 다르게 저장됨 기본 데이터형 boolean, byte, char, short, float, long, double 참조 데이터형 Object, String과 같이 클래스 식별자를 이용한 데이터형 동의대 김미진

자바 데이터형의 종류 동의대 김미진

자바 데이터형과 메모리 사용량 기본 데이터형 메모리 크기 범위 boolean 1비트 true/false char 16비트 유니코드(0~65,535) byte 8비트 -128~+127 short -32,768 ~ +32,767 int 32비트 -231 ~ +231-1 long 64비트 -9×1018 ~ +9×1018-1 float -3.4×1038 ~ +3.4×1038 double -1.8×10308 ~ +1.8×10308 동의대 김미진

래퍼 클래스 래퍼 클래스 기본형 래퍼 클래스 boolean Boolean double Double float Float 기본 데이터형은 객체로 사용할 수 없기 때문에 기본형 데이터를 객체로 변환하는 클래스 기본형 래퍼 클래스 boolean Boolean double Double float Float char Character byte Byte long Long int Integer short Short 30 동의대 김미진

참조형과 메모리 참조형 (reference type) 특정한 수를 나타내는 기본형과 달리 객체의 주소를 값으로 가지는 데이터 형 참조변수 생성자 호출 클래스명 객체 생성 참조값 반환 참조변수는 객체 접근을 위한 유일한 길이다. 동의대 김미진

객체 와 인스턴스 객체 인스턴스 모든 객체는 클래스의 인스턴스 객체는 추상적 개념이며 인스턴스는 구체적임 에) 여행사에 전화하면서 “비행기 표 있읍니까?” (표는 객체) 공항 데스크에서 직원에게 “표 여기 있습니다.” (표는 인스턴스) 객체는 인스턴스보다 덜 구체적인 개념임 인스턴스 인스턴스란 실제 프로그램이 동작할 때 힙 메모리에 저장되어 데이터를 개별적으로 가지고 있는 객체 인스턴스의 변수들은 실제 값을 가지고 있음 객체 내부에 정의된 변수는 인스탄스 변수 또는 객체 변수라고 함

객체 생성 객체1 객체2 EX03_04 첫번째 참조 객체 클래스

객체 생성 예 결과 객체1의 참조주소:EX03_04@12498b5 객체1의 참조주소:EX03_04@1a5ab41

변수의 종류 객체 변수 (일반 변수) 클래스 변수 (정적 변수) 메소드 변수 (지역 변수) 상수형 변수 (상수) 상수형 객체 변수 (객체 상수)

객체 변수와 클래스 변수 객체 변수 (일반 변수) 클래스 변수 (정적 변수) 객체가 생성될 때 마다 각기 다른 기억장소를 할당 객체마다 변수는 다른 값을 갖음 클래스 변수 (정적 변수) 객체의 생성과 상관없이 하나의 기억장소를 할당 모든 객체가 같은 값을 갖음 int k = 10; static int i = 10;

메소드 변수 메소드 변수 (지역 변수) 메소드 안에서 선언된 변수 호출할 때 마다 기억 장소 할당 String str = "Test Name";

상수와 객체 상수 상수 객체 상수 클래스 변수 중 static final로 선언된 변수 상수와 객체 상수 상수 클래스 변수 중 static final로 선언된 변수 컴파일 시 값이 결정되며 값의 변경이 불가능 객체 상수 객체 변수 중에 final로 선언된 변수 객체 생성시 값이 결정되며 그 뒤에는 변경이 불가능 static final int L = 10; final int m = 10;

문법 문법 (Syntex) 문법 내용 반드시 지켜야지만 컴파일이 가능한 규칙 변수 사용 규칙 클래스 사용 규칙 메소드 사용 규칙 생성자와 변경자 사용 규칙

변수 사용 규칙 변수와 메모리 변수와 메모리 종류 변수 하나당 일정한 크기의 메모리가 필요 참조 변수일 경우 객체 저장 메모리의 주소가 저장 변수와 메모리 종류 메소드 변수 메소드 내부에 정의된 변수 스택에 할당 됨 객체 변수 클래스 내부에 정의된 변수 힙에 할당 됨 클래스 변수 클래스 내부에 static으로 정의된 변수 정적 메모리에 할당 됨

클래스 정의

클래스 사용 규칙 클래스 정의 올바른 클래스 이름 식별자 public으로 정의된 클래스는 그 이름이 파일과 동일 일반적으로 클래스 이름이 영문일 경우에는 대문자로 시작 올바른 클래스 이름 식별자 Student, Professor, Computer, Class, Moive, DeepSea, 학교, 학생, 선생님, 홍길동2

메소드 사용 규칙 표준 메소드 일반 메소드 단순의 값의 쓰기와 읽기에 사용되는 메소드 일반적으로 변수명 앞에 set, get을 붙여서 이름을 만듦 읽기 메소드 getXXX()와 같이 get으로 시작 쓰기 메소드 setXXX()와 같이 set으로 시작 일반 메소드 일반적으로 로직을 설명할 수 있는 이름을 사용 save(), copyarray(), print(), run()

객체 생성 객체 생성 5단계 객체 내부에 정의된 다른 객체의 초기화 객체의 주소를 저장하는 참조 변수 초기화 객체 내부에 사용된 변수 초기화 기본 값을 지정한 변수 초기화 생성자 호출 생성이 완료된 객체의 주소가 참조 변수에 저장 객체 내부에 정의된 다른 객체의 초기화 동일한 객체 생성 단계를 통하여 초기화됨

키워드 final final 클래스 final 메소드 final 변수 클래스 상속을 더 이상 할 수 없음을 의미 클래스 상속에서 재정의 불가능함을 의미 final 변수 초기 할당된 값은 객체 생성 이후에 변경 불가능함 객체 변수의 경우 한번 생성된 객체를 변경하지 못함

가비지 컬렉션 메모리 관리 자바의 메모리 관리 메모리를 효율적으로 사용하는 방법 필요할 때 할당하고, 필요하지 않으면 회수 예) 강의실 시간표를 만들어 공유 자바의 메모리 관리 new 키워드를 통해서 객체가 힙 메모리에 할당 객체 사용이 끝나면 가비지 컬렉터에 의해서 회수 동의대 김미진

가비지 컬렉션의 동작 메모리 회수 알고리즘 프로그래머와 가비지 컬렉터 객체가 참조된 회수를 이용 객체 변수를 다른 객체 변수에 저장하면 1증가 객체 변수에 null을 할당하면 1감소 개별 객체마다 이러한 작업을 수행 일정한 주기나 임계 상황이 발생하면 참조 회수가 0인 객체는 자동적으로 메모리 회수 프로그래머와 가비지 컬렉터 프로그래머는 직접 메모리 회수할 수 없음 단지, 메모리 회수를 System.gc() 메소드를 통해서 요청할 수 있음 동의대 김미진

최종 정리자 최종 정리자 finalize() 메소드 재정의 모든 객체는 최상위 클래스 Object를 자동 상속함 Objects는 finalize() 메소드를 가지고 있음 finalize() 메소드를 최종 정리자라고 함 객체 소멸 시 열려진 파일을 닫거나 현재 내용을 저징할 때 유용함 finalize() 메소드 재정의 finalize() 메소드는 가베지 콜렉터에 의해서 회수되기 전에 자동적으로 호출됨 단, 갑자기 자바 가상 머신 자차게 종료되는 상황에서는 동작을 보장하지 못함,

가베지 콜렉션의 예 finalized 결과 참조변수 ex1만 null이므로 하나의 “finalized” 문자열만 출력되었다 동의대 김미진

요약 자바 언어는 재사용이 용이한 객체 지향 언어 자바 키워드 중에서 특히 true, false, null 등은 기존 언어에서 예약어로 사용되지 않은 것들임 자바 식별자는 유니코드를 지원하기 때문에 한자, 한글 등도 이용이 가능함 객체 지향 언어는 엄격한 형변환으로 실행시간 오류를 방지함 자바는 기본형과 참조형으로 나뉘며, 기본형에는 boolean, byte, char, short, int, long, float, double 등이 있으며, 참조형은 모든 객체를 저장할 수 있음 모든 객체는 참조형으로 취급되며 Object형 변수는 모든 객체를 저장할 수 있음 동의대 김미진

Thank You !