Download presentation
Presentation is loading. Please wait.
1
1학기 Java 요약
2
Java 특징 및 환경
3
Java의 플랫폼 독립성 모든 플랫폼은 Java 프로그램을 지원해야 한다. 플랫폼-독립적인 언어
어떤 하드웨어/운영체제에서도 실행 가능 한번 작성 어디서나 사용(Write Once, Use Everywhere) 내장형 프로그래밍에 적합 여러 종류의 플랫폼이 하나의 명세를 만족해야 한다. 단점은 없을까? 많은 메모리 사용 느린 실행 속도 정교한 시스템 소프트웨어 기술이 요구됨
4
플랫폼 독립성 Windows, JVM (x86) Linux, JVM Java class file Java program
Compiler Windows, JVM (x86) Linux, JVM Solaris, JVM (SPARC)
5
Java 환경 Java Development Kit (JDK)/SDK Java 프로그래밍 환경
프로그램 소스로부터 클래스 파일 생성 Compiler, debugger, document generator, … 프로그램 소스는 Java, C, Lisp, … 등으로 작성 가능 Java로 작성 가능하며 플래폼 독립적이다. Java 실행 환경(Java runtime environment:JRE) Java 프로그램 실행 JVM과 Java API로 구성 이 부분은 Java로 작성하기 어렵고 플랫폼 종속적이다.
6
Java 프로그래밍 환경 A Java program = multiple “.java” files
A Java executable = multiple “.class” files App_1.java App_2.java App_1.java Java programming environment App_1.class App_2.class App_1.class
7
Java Compiler (javac) Java compiler
Program “App” class App1 { … }; class App2 { class App3 { App1.class Java compiler App2.class App3.class Compiles a Java source into multiple class files A Java source consists of definitions of multiple classes. Java compiler creates a class file per a class definition. Currently, Javac does not generate good-quality code. Almost no optimization JRE itself should perform optimization
8
객체-지향 개념
9
객체 지향 : 동기 프로그램에서 실세계 객체들을 시뮬레이션
10
객체 객체 예: 은행 계좌 상태 – 객체에 대한 데이터 행동- 할(될) 수 있는 연산 혹은 동작 계좌 번호 현재 잔액
행동- 할(될) 수 있는 연산 혹은 동작 예: 은행 계좌 계좌 번호 현재 잔액 입금 가능 출금 가능
11
객체와 클래스 객 체 클래스 Class = 객체의 정의 혹은 타입 (a type of Object) 프로그램
객 체 Object = 데이터 + 관련 연산들(메쏘드 혹은 동작들) 클래스 Class = 객체의 정의 혹은 타입 (a type of Object) 프로그램 Program = 클래스들의 집합 Program 실행 = 서로 협력하는 객체들의 집합 (a set of Objects invoking each other Methods)
12
클래스 객체에 대한 정의 클래스는 객체에 대한 타입 실체화(Instantiation) 데이터(필드 변수들) 정의
데이터(필드 변수들) 정의 관련 연산들(메쏘드들) 정의 클래스는 객체에 대한 타입 객체는 어떤 클래스 타입으로 선언 객체는 어떤 클래스의 실체(instance)이다. 실체화(Instantiation) 클래스로부터 객체를 생성하는 것
13
클래스의 예 Java의 클래스 필드 변수 정의 메쏘드 정의 C++의 클래스 데이터 멤버 정의 멤버 함수 정의
14
Java 객체 및 클래스
15
(Method declarations)
클래스 정의 클래스는 데이터 선언과 메소드 선언을 포함한다. int size, weight; char category; 데이터 선언들 (Data declarations) 메쏘드 선언들 (Method declarations)
16
클래스 정의 클래스 정의 구문 변수, 구성자, 메쏘드를 클래스의 멤버라고 한다. class class-name {
필드 변수 선언 구성자 선언 메쏘드 선언 } 변수, 구성자, 메쏘드를 클래스의 멤버라고 한다.
17
클래스 정의: 예 class Account { int account_number; double balance;
Account (int account, double initial) { account_number = account; balance = initial; } // constructor Account void deposit (double amount) { balance = balance + amount; } // method deposit } // class Account
18
Account saving = new Account ();
객체 생성 new 연산자는 클래스로부터 객체를 생성한다. Account saving = new Account (); saving는 Account 객체를 참조하는 변수 new 연산자에 의해 생성된 객체로 초기화됨. 생성된 객체에 대해 구성자를 호출하여 set-up한다.
19
클래스와 객체 생성 클래스로부터 객체 생성(instantiation) Account savings; 객체
savings = new Account (1, ); 각 객체를 위한 기억공간이 할당됨 객체 클래스의 실체 (an instance of a class) 실체 변수(instance variable) 클래스 내에 정의된 변수로 각 객체마다 기억공간이 할당됨 한 클래스의 모든 객체들은 메쏘드를 공유
20
클래스 및 객체 Objects Class account_number 2908371 balance 573.21
int account_number double balance account_number balance 573.21
21
구성자(Constructors) 구성자 클래스의 구성자를 꼭 정의해야 하는 것은 아니다.
특별한 메쏘드로 생성된 객체를 set up하는데 사용된다. 보통 변수를 초기화한다. 클래스와 이름이 같다 반환 값이 없으며 반환 타입도 없다. 클래스의 구성자를 꼭 정의해야 하는 것은 아니다.
22
구성자:예 Account 구성자는 초기값을 받아서 초기화한다.
Account savings = new Account (1,125.89);
23
객체 참조 변수 객체 참조 변수 선언 및 객체 생성 객체가 존재하면 메쏘드 호출 가능 (점 연산자 이용)
Account savings; savings = new Account (1, ); 객체가 존재하면 메쏘드 호출 가능 (점 연산자 이용) savings.deposit (35.00);
24
객체 참조 객체 참조는 객체의 주소를 갖는다. 객체에 대한 모든 상호 작용은 객체 참조 변수를 통해서 일어난다.
Chess_Piece bishop1 = new Chess_Piece(); 객체에 대한 모든 상호 작용은 객체 참조 변수를 통해서 일어난다. bishop1
25
배정 배정은 값을 변수에 저장한다. 기초 타입: num2 = num1; 전 num1 5 num2 12 후 num1 5 num2
26
참조 배정 객체 참조 변수의 경우, 객체의 주소가 배정된다. bishop2 = bishop1; 전 후 bishop1
27
메쏘드 선언 char calc (int num1, int num2, String message) 메쏘드 이름 매개변수 리스트
매개변수 리스트는 매개변수 타입과 이름을 나열한다. 선언된 매개변수를 형식 매개변수라고 한다. 반환 타입
28
메쏘드 선언 메쏘드 헤더 다음에 메쏘드 몸체가 나온다.
char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } 반환 식은 반환 타입과 일치해야 한다. sum과 result는 지역 변수로 메쏘드가 호출될 때마다 생성되고 반환될 때 제거된다.
29
return 문 메쏘드의 반환 타입은 메쏘드가 반환하는 값의 타입을 의미한다. Return 문은 반환될 값을 명시한다.
반환 값은 반환 타입과 일치해야 한다. 값을 반환하지 않는 메쏘드는 반환 타입이 void이다.
30
매개변수 메쏘드가 호출될 때 실 매개변수(actual arguments) 값은 형식 매개변수에 복사된다.
char calc (int num1, int num2, String message) { int sum = num1 + num2; char result = message.charAt (sum); return result; } ch = obj.calc (25, count, "Hello"); 실 매개변수(actual parameters) 형식 매개변수(fomal parameters)
31
메소드 제어 흐름 obj.doIt(); main doIt helpMe helpMe(); 다른 클래스
32
Java에서 매개 변수 전달 매개변수를 전달할 때 실 매개변수 값이 형식 매개변수에 전달(복사)된다. 기초 타입 전달
값 전달(pass by value) 값이 복사되어 전달된다. 객체 참조 전달 참조 전달(pass by reference) 형식 매개변수는 실 매개변수와 이명이 되며 형식 매개변수와 실 매개변수는 같은 객체를 참조한다.
33
가시성 조정자 (Visibility Modifiers)
34
캡슐화(Encapsulation) 외부 관점에서 본 객체 객체는 자기 관리되어야 한다. 객체는 캡슐화된 개체로
서비스(즉 객체에 대한 창구)를 제공한다. 객체는 자기 관리되어야 한다. 객체의 상태는 메쏘드에 의해서 변경되어야 한다. 다른 객체가 접근하여 상태를 바꾸는 것을 어렵게 해야 한다.
35
캡슐화(Encapsulation) 클라이언트 캡슐화된 객체는 블랙 박스로 생각할 수 있다. 객체의 사용자는 메쏘드 데이터
서비스를 요청할 수 있으나 서비스의 구현에 대해서는 알 수 없어야 한다. 메쏘드 데이터 클라이언트
36
캡슐화 예 client savings deposit withdraw add_interest produce_statement
37
가시성 조정자: Java 가시성 조정자를 사용하여 캡슐의 가시성을 조정한다. 클래스 사용자는 멤버 함수 정의만 보면 된다.
캡슐화를 위해 오류의 지역화를 위해 클래스 사용자는 멤버 함수 정의만 보면 된다.
38
가시성 조정자 public private 멤버 필드와 메소드는 클래스의 내외 어느 곳에서나 접근이 가능
클래스 내부에서만 접근 가능
39
가시성 조정자 일반적 규칙 공용 메쏘드 지원 메쏘드 객체의 데이터는 공용으로 선언하면 안 된다.
객체의 서비스(창구)를 제공하는 메쏘드로 서비스 메쏘드라고도 한다. 지원 메쏘드 서비스 메쏘드를 지원하는 메쏘드로 공용이 아니다.
40
메소드 중복정의(overloading)
한 클래스 내에 같은 이름을 갖는 여러 메쏘드 내부적으로 다른 작업을 하지마 의미 면에서 같다면 동일한 이름을 사용 가능 메소드 이름은 동일하지만 매개변수 개수, 순서 타입 등은 달라야 함 메쏘드의 서명(signature) 메쏘드 이름, 매개변수의 개수, 순서, 타입 컴파일러가 서명을 이용해서 구분해서 컴파일 메소드 이름이 동일하고 서명도 동일하다면 컴파일 오류 발생 메소드의 리턴 타입은 서명에 포함되지 않음
41
메소드 중복정의:예 1 class Overloading { 2 public void say() {
System.out.println("Hello ?"); } public void say(String msg) { System.out.println(msg); } public void say(String msg, int n) { for(int i =0; i < n; i++) { System.out.println(msg); } } public static void main(String args[]) { Overloading a = new Overloading(); a.say(); a.say("How are you ?"); a.say("I am fine.", 3); …………...
42
구성자 중복정의:예 구성자를 중복정의하는 경우 Account (int account) {
account_number = account; balance = 0.0; } // constructor Account Account (int account, double initial) { balance = initial; } // constructor Account
43
자바의 종류
44
J2SE Java 2 Standard Edition 데스크 톱 환경을 위한 Java 다른 플랫폼에 대한 시작점
JVM(Java Virtual Machine) 소프트웨어 응용 범위 실행 시간: 하루 이하 빠른 시작과 빠른 실행
45
J2EE Java 2 Enterprise Edition 서버 응용 프로그램을 위한 Java 플랫폼 다양한 기술을 통합
Servlet과 JSP(Java Server Page) Enterprise JavaBeans(컴포넌트 기술) CORBA JDBC, XML, Java Transactions HotSpot server VM 긴 실행 시간 빠른 실행 동적 컴파일
46
J2ME Java 2 Micro Edition 내장형 시스템을 위한 Java 플랫폼 VM + Profile
전의 embedded Java와 personal Java를 대치 요구 사항 빠른 응답 적은 전력 사용 최소한의 네트워크 연결 넓은 범위의 내장형 시스템 지원
47
J2ME (Java 2 Micro Edition)
Servers Workstations PCs Thin Clients Battery Powered Card HotSpot JVM KVM Card VM Java Classes Smart Card Profile CDC Foundation Class TV Screen Phone Car CLDC Core Class MIDP Kitty- Hawk DojaP J2EE J2SE J2ME (Java 2 Micro Edition) Embedded Space CVM
Similar presentations