Presentation is loading. Please wait.

Presentation is loading. Please wait.

2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램

Similar presentations


Presentation on theme: "2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램"— Presentation transcript:

1 2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
2.4 자바 응용 프로그램 2.5 자바 애플릿 프로그램

2 2.1 자바 개발 환경 JDK 설치 http://java.sun.com:80/products/jdk/1.2/
download-windows.html JDK 도구 자바 번역기 : javac 자바 해석기 : java 애플릿 프로그램 실행기 : appletviewer 자바 디버거 : jdb C 헤더파일과 스터브 파일 생성기 : javah 자바 문서 생성기 : javadoc 자바 압축 도구 : jar

3 2.2 자바 통합환경 JDK는 GUI 형태의 개발환경을 제공하지 않는다 많은 회사에서 GUI 형태의 JDK 통합환경 제공
시멘틱사의 카페(Café) 볼랜드사의 라테(Latte) MS 사의 비주얼 J++ 선사의 자바 워크샵(WrokShop) 각 회사에서 제공되는 통합환경은 복잡한 사용방법을 익혀야 하고 각 환경마다 조금씩 다른 자바 코드를 생성하는 단점이 있다. JDK 환경 사용 권장

4 시멘틱사의 카페(Café) 통합환경

5 2.3 자바 응용 프로그램과 애플릿 프로그램 자바 응용 프로그램 자바 애플릿 프로그램
2.3 자바 응용 프로그램과 애플릿 프로그램 자바 응용 프로그램 C나 C++ 프로그램과 같은 일반적인 응용 프로그램 자바 애플릿 프로그램 WWW 검색기나 애플릿 뷰어에서 실행되는 프로그램 작고 간단한 응용에 많이 사용된다 네트웍을 통하여 실행될 수 있으므로 개발환경과 실행환경의 독립성이 보장된다.

6 2.4 자바 응용 프로그램 JDK는 별도의 편집기를 제공하지 않는다. 윈도우의 메모장이나 도스 편집기를 이용하여 프로그램을 작성 // 프로그램 : Example1.java class Example1 { public static void main(String args[]) { System.out.println("안녕하세요!! 첫 번째 자바 프로그램입니다"); }

7 응용 프로그램의 번역과 실행

8 2.5 자바 애플릿 프로그램 애플릿 프로그램은 WWW검색기나 애플릿 뷰어에 의해 실행
// 프로그램 : Example2.java import java.applet.*; import java.awt.*; public class Example2 extends Applet { public void paint(Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); }

9 애플릿 프로그램의 번역과 실행 자바 컴파일러를 사용하여 번역 : javac Example2.java
애플릿을 실행하기 위해서는 애플릿을 로드하는 HTML 파일을 작성하여야 한다. <HTML> <HEAD> <TITLE> 자바 프로그램 테스트 02 </TITLE> </HEAD> <BODY> <CENTER> <APPLET CODE= "Example2.class" WIDTH=400 HEIGHT=200 > </APPLET> </CENTER> </BODY> </HTML>

10 애플릿 프로그램의 실행 (애플릿 뷰어)

11 애플릿 프로그램의 실행 (WWW 검색기)

12 2부 객체지향과 자바언어의 기본 구조 3 장 객체지향 개념 4 장 자바 기본 구조 5 장 자바의 제어문 6 장 클래스
2부 객체지향과 자바언어의 기본 구조 3 장 객체지향 개념 4 장 자바 기본 구조 5 장 자바의 제어문 6 장 클래스 7 장 상속 8 장 인터페이스와 패키지 9 장 예외처리 10 장 다중 스레드

13 3장 객체지향의 개념 3.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
3장 객체지향의 개념 3.1 객체지향(object-oriented)과 절차지향(procedural-oriented) 3.2 객체(object) 3.3 클래스(class) 3.4 상속(inheritance) 3.5 캡슐화(encapsulation) 3.6 다형성(polymorphism) 3.7 메시지(message) 3.8 객체지향의 개념과 자바 프로그램

14 3.1 객체지향과 절차지향 객체지향의 배경 소프트웨어 모듈의 재사용과 독립성을 강조 객체 효율적인 정보관리를 위하여 의미를 부여하고 분류하는 개념적인 단위 객체 지향(Object-Oriented) 대 절차지향(Procedural-Oriented) 절차지향 : 데이터 구조와 그 데이터를 변화 시키는 알고리즘으로 구성 객체지향 : 객체들이 메시지(message)를 통하여 통신함으로써 원하는 결과를 얻는다. 각 객체는 고유의 데이터와 데이터를 처리할 수 있는 메소드로 구성

15 객체지향 대 절차지향 절차지향 객체지향 공유 데이터 함수 함수 데이터 함수 데이터 데이터 함수 객체 객체 객체
메소드 함수 데이터 함수 메시지 메소드 객체 메소드 데이터 메시지 공유 데이터 메시지 메소드 메소드 데이터 객체 함수 메시지 메소드 객체 절차지향 객체지향

16 3.2 객체(Object) 객체 효율적으로 정보를 관리하기 위하여, 사람들이 의미를 부여하고 분류하는 논리적인(개념적인) 단위 실세계에 존재하는 하나의 단위에 대한 소프트웨어적 표현 객체의 구성 속성의 값을 나타내는 데이터(data) 데이터를 변경하거나 조작할 수 있는 메소드로 구성

17 객체의 예 아버지 객체 아들 객체 객체는 프로그래머에 의해 모델링된다 메소드 데이터 장난감, 자동차, 돈, 과자, 동화책,
장난감을 가지고 논다 운전을 한다 비디오 를 본다 자동차, 돈, 술, 몽둥이, 신문, 담배 돈으로 물건을 산다 과자를 먹는다 장난감, 과자, 동화책, 게임기, 비디오, TV 술을 마신다 동화책 읽는다 게임을 한다 담배를 피운다 신문을 읽는다 TV를 본다 몽둥이로 때린다 아버지 객체 아들 객체

18 3.3 클래스(Class) 객체는 항상 클래스로부터 생성된다. 즉 클래스는 객체를 생성하는 형판(template)
클래스는 두개의 구성요소(member)인 자료구조(필드)와 연산(메소드)을 가진다 클래스로부터 생성된 객체를 instance라 한다. 객체 = instance 정보처리의 주체는 클래스가 아니라 객체이다 객체지향 프로그래밍의 시작은 클래스의 생성이다 클래스로부터 객체의 생성 예 학생1 = new 학생(이기쁨, 남자, 컴퓨터공학과, 2학년) 객체 객체생성 클래스 매개변수 이름 명령어 이름 데이터

19 클래스 - 클래스로부터 객체의 생성 클래스 인스턴스 (객체) 객체이름 데이터 메소드 클래스 이름
학생 이름 성별 학과 학년 수강신청 시험보기 성적조회 클래스 이름 학생1=new 학생(이기쁨,남자,….); 학생2=new 학생(신예진,여자,….); 학생3=new 학생(이정순,여자,….); 속성(자료구조) 메소드(연산) 객체생성(instantiation) 객체이름 데이터 메소드 학생1 이기쁨 남자 컴퓨터공학과 2학년 수강신청 시험보기 성적조회 학생2 신예진 여자 경영학과 3학년 수강신청 시험보기 성적조회 학생3 이정순 여자 철학과 4학년 수강신청 시험보기 성적조회 인스턴스 (객체)

20 3.4 상속(inheritance) 클래스는 계층구조를 구성할 수 있다
상위 계층의 모든 요소를 상속 받고 추가적으로 필요로 되는 새로운 자료구조와 메소드를 추가하여 하위 계층의 클래스를 생성 객체지향에서는 상속의 개념을 이용하여 소프트웨어의 재사용(reusing)을 지원

21 클래스의 상속 클래스 학생-high 클래스 학생-low 상속 (inheritance) 추가된 속성과 메소드 클래스 이름
성별 학과 학년 수강신청 시험보기 성적조회 클래스 이름 속성(자료구조) 메소드(연산) 클래스 학생-low 상속 (inheritance) 학생-low 이름 성별 학과 학년 컨닝횟수 수강신청 시험보기 성적조회 컨닝하기 추가된 속성과 메소드

22 클래스의 계층구조 클래스의 계층 구조 새로운 클래스를 생성할 때 기존 클래스의 하위 클래스로 선언할 수 있다.
새로운 클래스에 속성이나 메소드를 추가하여 기존 클래스를 확장할 수 있다. 클래스는 계층구조를 이룬다. 일반화 - 공통 속성 가짐 - 속성이 간단 특수화 - 상위속성 상속 - 개별속성 추가 - 속성이 많다 생물 동물 식물 포유류 물고기 양서류 사람 사자 코끼리 클래스의 계층 구조

23 클래스계층 구조에서의 상속 관계 + + + + + + = = = = 속성을 상속하여 새로운 클래스를 생성
: 새로 정의하여 추가한 속성 : 상속하여 재사용하는 속성 = 호흡함 생물 : 상속 경로 = 호흡함 + 걸어 다님 동물 = 호흡함 걸어 다님 + 젖으로 양육함 포유류 + + = 호흡함 걸어 다님 + 젖으로 양육함 + 웃음 사람 속성을 상속하여 새로운 클래스를 생성

24 상속의 예 person 상위(super) 클래스 student faculity staff 하위(sub) 클래스
undergrad graduate

25 3.5 캡슐화(encapsulation) 객체를 캡슐화 하여 What만 보여주고 How는 감춘다.
객체를 작성할 때 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 작성 객체의 사용자는 기능만 알고 사용하며 어떻게 처리되는지는 은폐된다(Information Hiding) 공개된 인터페이스 객체의 사용자들은 공개된 인터페이스를 통해서만 객체에 접근할 수 있다 숨겨진 데이터와 메소드들 public 객체 public public public

26 캡슐화의 장점 객체에 포함된 정보의 손상과 오용을 막을 수 있다. 객체 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다.
데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립 성이 유지된다. 처리된 결과만 사용하므로 객체의 이식성이 좋다. 객체를 부품화 할 수 있어 새로운 시스템의 구성에 부품 처럼 사용할 수 있다.

27 3.6 다형성(Polymorphism) “one interface, multiple implementation”
하나의 인터페이스를 사용하여 다양한 구현 방법을 제공 모형 draw() 타원 draw() { 타원을 그린다 } 삼각형 draw() { 삼각형을 그린다 } 사각형 draw() { 사각형을 그린다 }

28 3.7 메시지(message) 객체에게 일을 시키는 행위 메시지는 세가지 요소로 구성된다 메시지 수신객체 송신객체
메시지를 받을 객체의 이름(주소) 송신객체가 실행을 원하는 수신객체의 메소드 이름 실행을 원하는 메소드에 전달할 매개변수 수신객체 메시지 송신객체 객체이름.메소드(매개변수)

29 메시지의 예 Point 객체의 메소드 호출 클래스 P의 구조 public class Point1 { P point;
자료구조 int xPosition; int yPosition; boolean status; Color color; Point 객체의 메소드 호출 public class Point1 { P point; public static void main(String args[]) { point = new(P); // 객체의 생성 point.move(10,10); // 메시지 사용 point.setColor(blue); point.penUp(); point.penDown(); } void move(int x, int y); void setColor(Color c); void penUp(); void penDown(); 클래스 P의 구조

30 클래스 계층구조에서의 메시지 처리 상위 클래스에서 메소드 탐색 계속하여 상위 클래스를 탐색 메소드1 메소드 5 자료 구조 자료 구조 메소드 2 메소드 4 상속 상속 메소드 6 메소드3 소속 클래스에서 메소드 탐색 객체 고유 데이터 객체 고유 데이터 메시지 도착 객체 객체2 (객체들은 자신이 가지는 고유의 데이터만 가지고 생성되며 메소드는 클래스에 있는 것을 공유 한다)

31 3.8 객체지향의 개념과 자바 프로그램 class A { int result;
public int add(int x,int y) { result = x + y; return result; } public int subtraction(int x,int y) { result = x - y; class B extends A { public int multi(int x,int y) { result = x * y; public int divide(int x,int y) { result = x / y; 클래스 생성 메소드 생성 클래스 A로부터 상속받아 클래스 B 생성 클래스 B는 A로부터 상속되었으므로 A의 메소드를 사용할 수 있다

32 객체지향의 개념과 자바 프로그램 클래스로부터 객체의 생성 객체에게 메시지를 보낸다 class TestAB
objectb 객체는 메소드 add()를 가지고 있지 않으므로 상위 클래스를 탐색 하여 add() 메소드를 수행 objecta 객체는 multi() 메소드를 가지고 있지 않으므로 에러를 발생 클래스로부터 객체의 생성 class TestAB public static void main(String args[]) { int temp; A objecta = new A(); B objectb = new B(); temp = objecta.add(10,20); System.out.println( A의 add 수행결과 + temp); temp = objectb.add(1,2); System.out.println( B의 add 수행결과 + temp); temp = objectb.multi(2,2); System.out.println( B의 multi 수행결과 + temp); temp = objecta.multi(20,20); System.out.println( A의 multi 수행결과 + temp); }

33 객체지향 프로그래밍(OOP) 언어 1960 1970 1980 1990 객체지향 프로그래밍 언어들의 계보 LISP ALGOL
SIMULA Smalltalk C Pascal Flavors Loops Objective-C Eiffel Object Pascal C++ CLOS Actor JAVA 전통언어 객체지향 전통 및 객체지향 객체지향 프로그래밍 언어들의 계보

34 4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
4.3 식별자(identifier)와 예약어 4.4 변수와 자료형 4.5 형 변환(Casting) 4.6 연산자와 수식 4.7 배열 4.8 문자열(String)

35 4.1 자바 응용 프로그램 분석 (1) 자바의 주석 /* 주석 */ : /*에서 */까지의 모든 것을 무시한다 // 주석
/* 주석 */ : /*에서 */까지의 모든 것을 무시한다 // 주석 : //에서부터 그 줄의 끝까지를 무시한다 /** 주석 */ : /**에서 */까지의 모든 것을 무시한다. 이 주석은 javadoc에 의해 생성되는 HTML 파일에서 사용된다

36 응용 프로그램의 예 - (2) 클래스의 정의 클래스의 정의
/** 다음 프로그램(ExamTest.java)은 두개의 클래스로 구성된다 */ class Exam { // 클래스 Exam의 정의 int c; public int add(int a, int b) { c = a + b; return c; } } class ExamTest { /* Exam 클래스의 객체를 생성하여 사용한다 객체로부터 반환된 결과를 인쇄한다 */ public static void main(String args[]) { int sum; int x, y; x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); // 명령행 인자로부터 데이터를 받아 정수로 변환하여 저장 Exam examobject = new Exam(); sum = examobject.add(x,y); System.out.println("입력한 값의 합은 " + sum + "입니다"); } 클래스의 정의

37 응용 프로그램의 예 (3) main() 메소드 public static void main(String args[]) {
…… } main() 메소드는 자바 응용 프로그램에 반드시 있어 야 하는 특수한 메소드 프로그램의 실행시 자동으로 실행되는 메소드 C나 C++ 언어의 main() 함수와 같은 역할 일반적으로 자바 응용 프로그램은 main() 메소드 내에 서 다른 클래스의 객체를 생성한 다음 그 객체에 메시 지를 보내어 원하는 결과를 얻는다.

38 응용 프로그램의 예 (3) main() 메소드의 매개변수 args[] x = Integer.parseInt(args[0]);
main() 메소드는 문자열의 배열을 매개변수(argument)로 받는다 프로그램 실행시 필요한 정보를 전달. 이러한 매개변수를 명령행 매개변수(command-line argument)라 한다. 명령행 매개변수들은 입력된 순서에 따라 배열에 저장된다 예제에서는 args[]에 저장된 데이터를 숫자로 사용하기 위해 Integer 클래스의 parseInt() 메소드를 사용하여 변환 x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]); 예제 프로그램을 다음과 같이 실행 >java ExamTest 20 40 입력한 값의 합은 60입니다 args[0] args[1]

39 응용 프로그램의 예 (5) 객체의 생성과 메시지 전달 Exam examobject = new Exam();
예제 프로그램에서 main() 메소드는 Exam 클래스로부터 객체 examobject를 생성 명령행 인자로 입력된 x, y 값을 매개변수로 하여 examobject 객 체의 add() 메소드를 수행하라는 메시지를 보낸다 Exam 클래스의 add() 메소드는 매개변수로 받은 두 개의 수를 더 하여 결과를 반환하고, 반환된 값은 sum 변수에 저장된다. Exam examobject = new Exam(); sum = examobject.add(x,y);

40 응용 프로그램의 예 (6) 표준 출력의 사용 자바의 입출력은 다양한 종류의 하드웨어 장치들과 무관하게 설계 (14장) 표준 출력을 위해 System 클래스와 out 객체, println() 메소드를 이용 println() 메소드는 문자열을 매개변수로 받아 화면에 출력하는 역 할을 한다. 예제의 매개변수에 사용된 정수형 변수 sum의 값은 문 자열로 자동 변환되어 출력된다 System.out.println("입력한 값의 합은 " + sum + " 입니다"); 클래스 이름 객체의 이름 메소드 이름 메소드의 매개변수

41 4.2 자바 애플릿 프로그램 분석 애플릿 프로그램의 특징 main() 메소드가 없다
네트웍 환경에서 WWW 검색기에 의해 실행 가능 JDK에서 제공되는 애플릿-뷰어에서 실행 가능 HTML 코드내에서 애플릿 파일(*.class) 호출 작고 간단한 응용에 적합

42 애플릿 프로그램의 예 (1)패키지 포함 프로그램에서 사용한 라이브러리 클래스를 import 문을 사용하여 포함
import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); }

43 애플릿 프로그램의 예 (2) 클래스 정의 애플릿 프로그램은 반드시 java.applet.Applet 클래스로부터 상 속 받아야 한다. import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); }

44 애플릿 프로그램의 예 (3) paint() 메소드 - 애플릿에 그래픽을 출력하는 메소드 매개변수로 지정된 문자열을
import java.applet.*; import java.awt.*; public class Example extends Applet { public void paint( Graphics g) { g.drawString("안녕하세요!! 두 번째 자바 프로그램입니다!", 100,60); } 매개변수로 지정된 문자열을 애플릿의 100,60(애플릿의 좌상단을 기준) 위치에 출력

45 애플릿 프로그램의 예 (4) 애플릿의 실행 - 애플릿은 HTML 코드 내에서 호출된다 <HTML>
<HEAD> <TITLE> 자바 프로그램 테스트 02 </TITLE> </HEAD> <BODY> <CENTER> <APPLET CODE= "Example.class" WIDTH=400 HEIGHT=200 > </APPLET> </CENTER> </BODY> </HTML> 애플릿의 크기

46 4.3 식별자와 예약어 식별자 변수, 상수, 메소드, 배열, 문자열, 사용자가 정의하는 클래스나 메 소드 등을 구분할 수 있는 이름 첫 문자가 영문자나 특수문자('_','$')로 시작 길이에는 제한을 두지 않는다 예약어는 식별자로 사용할 수 없다. 대, 소문자를 구분하여 사용 식별자의 사용 관례 클래스 이름은 대문자로 시작 메소드, 변수, 배열, 문자열 등의 이름은 소문자로 시작

47 식별자와 예약어 자바의 예약어 abstract boolean break byte cast
catch char class const continue default do double else extends final finally float for goto if implememts import instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws transient try void volatile while

48 식별자와 예약어 자바는 16비트 유니코드 사용 유니코드는 세계의 다양한 언어들을 지원하기 위해 설계된 문자코 드 체계
현재 34168개의 글자들을 코드화 하고 있으며 최대 65536개의 글 자들을 코드화 할 수 있다 유니코드는 기존의 ASCII 코드 문자 집합을 포함 사이트 참조


Download ppt "2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램"

Similar presentations


Ads by Google