객체지향프로그래밍

37
객객객객객객객객객 객객객객객 1/37 객객객객객객객객객 2008 객 1 객객 객객객객객 객객객객객 객객객객 : 객객객

Upload: mary-beard

Post on 02-Jan-2016

53 views

Category:

Documents


6 download

DESCRIPTION

객체지향프로그래밍. 2008 년 1 학기 강원대학교 컴퓨터학부 담당교수 : 정충교. 강사진. 담당교수 : 정충교 연구실 : 공대 6 호관 503 호 전화 : 033-250-6325 이메일 : [email protected] 조교 : 연구실 : 공대 6 호관 518 호 제 1 분반 : 우철호 [email protected] 제 2 분반 : 장걸 [email protected]. 강의 목표와 지향. 자바 언어를 통해 객체지향프로그래밍 기초 능력을 기른다 . - PowerPoint PPT Presentation

TRANSCRIPT

객체지향프로그래밍 강원대학교 1/37

객체지향프로그래밍

2008 년 1 학기강원대학교 컴퓨터학부

담당교수 : 정충교

객체지향프로그래밍 강원대학교 2/37

강사진

• 담당교수 : 정충교– 연구실 : 공대 6 호관 503 호– 전화 : 033-250-6325– 이메일 : [email protected]

• 조교 :– 연구실 : 공대 6 호관 518 호– 제 1 분반 : 우철호 [email protected]– 제 2 분반 : 장걸 [email protected]

객체지향프로그래밍 강원대학교 3/37

강의 목표와 지향

• 자바 언어를 통해 객체지향프로그래밍 기초 능력을 기른다 .

• 매일 실습이 있으며 실제 프로그램 개발 능력 배양에 역점 을 둔다 .

객체지향프로그래밍 강원대학교 4/37

평가 • 중간고사 25%, 기말고사 25%, 수시시험 4 회 25%, 실습및출석

25% • ( 모든 시험은 프로그래밍 실기시험임 )

• 매일 실습과제가 주어짐– 매 실습마다 실습과제 완료 확인을 받아야 함– 실습시간에 확인을 받지 못한 경우 그 다음 주 실습시간에 확인을

받을 수 있음

• 수시시험 (4 회 ) 보는 날 :– 정상 강의– 실습시험 : 실습시간에 봄– 새로운 실습과제 나감 ( 각자 집에서 실습 , 다음 주 실습시간에

점검 )– 이전 주 실습과제 점검이 필요한 경우 다음 주에 한꺼번에 받음

객체지향프로그래밍 강원대학교 5/37

수강조건

• C 언어를 알고 있어야 함• 특히 자료형 , 변수 , 상수 , 제어문 , 함수호출 등을 알고

있어야 함• 이 강의에서는 위 내용에 대해 간략하게만 설명하고

객체지향 개념과 응용에 집중함

객체지향프로그래밍 강원대학교 6/37

교재

• 주교재– Big Java, 제 2 판 , Cay Horstmann 저 , 오세만

등 공역 , 생능출판사 ( 번역서 )• 부교재

– 알기쉽게 해설한 Java 제 4 판 , 김충석 지음 , 이한출판사 2004 년

– Head First Java, 케이시 시에라 , 버트 베이츠 저 , 서환수 역 , 한빛미디어 ( 번역서 )

– 소설같은 자바 (http://www.jabook.org/)

객체지향프로그래밍 강원대학교 7/37

차수 날짜

1 분반 ( 화 )/2 분반 (수 )

내용 교과서 비고

1 3.4/3.5 소개 1

2 3.11/3.12 객체의 사용 2

3 3.18/3.19 클래스의 구현 , 기본자료형 3,4 1 차시험

4 3.25/3.26 그래픽 프로그래밍 5

5 4.1/4.2 프로그램 실행 제어 , 배열 6,7,8 2 차시험

6 4.8/4.9 클래스 설계 , 테스트 9,10 4 월 9 일 선거일 , 정상수업

7 4.15/4.16 인터페이스와 다형성 11

4.22( 화 ) 중간고사 저녁 7 시 -9 시22( 화 )-25( 금 ) 중간고사기간

8 4.29/4.30 이벤트 처리 12

9 5.6/5.7 상속 13 3 차시험

10 5.13/5.14 그래픽 사용자 인터페이스 14

11 5.20/5.21 예외처리 15 4 차시험

12 5.27/5.28 파일과 스트림 16

13 6.3/6.4 멀티 스레딩 18

6.10( 화 ) 기말고사 저녁 7 시 -9 시

객체지향프로그래밍 강원대학교 8/37

제 1 주

소개

제 1 주 강의 목표•자바 언어의 특징을 이해함•자바 프로그램을 작성하고 컴파일하여 실행하는 과정을 배움•간단한 프로그램을 스스로 작성하여 실행할 수 있게 됨•자바 개발 환경을 스스로 구축할 수 있게 됨

객체지향프로그래밍 강원대학교 9/37

자바언어의 특징

• 단순 (simple)– C 나 C++ 에서 프로그래머에게 많은 혼란을 주는 요소들을 제거– 포인터 , 구조체 등을 사용하지 않음– 자동적인 쓰레기 수집 (garbage collection) 기능을 제공

• 객체지향 (Object-Oriented)– 소프트웨어의 재사용과 정보의 캡슐화 등 장점을 제공 – Object

• 보거나 만질 수 있는 모든 사물• 우리말로는 객체 혹은 개체로 번역되고 있음

– 객체 ( 客體 ): 목적물 , 작용의 대상– 개체 ( 個體 ): 따로따로 떨어진 낱낱의 물체

객체지향프로그래밍 강원대학교 10/37

자바언어의 특징• 인터프리터 (Interpreter) 에 의해 실행

– 자바 소스코드는 컴파일을 통해 바이트 코드로 번역됨– 바이트 코드를 실행시키면 바이트 코드 해석기 (interpreter)

에 의해 기계어 코드가 만들어지면서 이 기계어 코드가 실행됨

Java program

컴파일러

인터프리터컴파일

실행

바이트코드 컴퓨터하드웨어

기계어코드

객체지향프로그래밍 강원대학교 11/37

• C 언어의 경우 : 소스코드가 기계어로 바로 번역됨• 프로그램을 실행할 컴퓨터 (target machine) 에 따라

컴파일러가 달라지고 다른 기계어코드가 생성됨

C program

컴파일러

컴파일

실행

기계어코드

컴퓨터하드웨어

객체지향프로그래밍 강원대학교 12/37

자바언어의 특징

• 구조중립적 (architecture neutral) 이고 이식성(portable) 이 높음– 바이트코드 인터프리터를 중심으로 몇가지 부가기능을 갖춘 소프트웨어를 자바가상기계 (JVM)라고 부름

– 자바프래그램은 한번 작성 / 컴파일되면 JVM이 설치된 모든 종류의 컴퓨터에서 실행 가능

– 시스템 구조 중립적으로 설계됨 (int 는 항상 32 비트 )

객체지향프로그래밍 강원대학교 13/37

소스코드*.java

서버

클라이언트 (JVM)

인터넷번역기

해석기

실행결과

실행결과해석기

자바 바이트코드는 자바 가상기계가 설치된 어떤 컴퓨터에서도 실행 가능하며 네트워크를 통해 쉽게 배포할 수 있다 .

바이트 코드

*.class 윈도 PC

핸드폰

프로그램을 실행할 컴퓨터 기종과 무관한 바이트코드가 생성됨프로그램을 실행할 컴퓨터

기종과 무관한 컴파일러 ( 번역기 ) 한 종류만 존재함

interpreter

객체지향프로그래밍 강원대학교 14/37

컴파일러

바이트 코드

자바 프로그램

인터프리터 인터프리터 인터프리터

핸드폰 Macintosh 컴퓨터 Windows PC

개발환경

실행환경

객체지향프로그래밍 강원대학교 15/37

자바언어의 특징

• 견고함 (Robust) – 프로그램 오작동하거나 죽을 가능성 낮음– No pointer– Strict type checking– Automatic garbage collection

객체지향프로그래밍 강원대학교 16/37

자바 플랫폼 (Platform)

• 플랫폼 : 하드웨어와 소프트웨어 환경• 기존의 컴퓨터에 자바 플랫폼을 구축하기 위해서는

자바 소프트웨어 (J2SE) 를 설치함

자바플랫폼

자바 프로그램

자바 API

자바 가상 기계 (JVM)

하드웨어 플랫폼

객체지향프로그래밍 강원대학교 17/37

자바 플랫폼 (Platform)

• 자바 API (Application Programming Interface)

– J2SE 에서 제공되는 라이브러리

– 자바 개발자는 자바 API 에 미리 정의된 라이브러리를 이용하여 편리하게 자바 프로그램을 작성할 수 있음

객체지향프로그래밍 강원대학교 18/37

자바와 웹 (WWW)

자바가 웹 환경에서 강한 이유자 바 의 바 이 트 코 드 가 서 버 에 서 클 라 이 언 트 로

다운로드되어 실행하나의 바이트코드가 여러 기종의 클라이언트에서

실행 웹의 클라이언트 /서버 구조 쉽게 적응

웹과 자바의 연동 형태애플릿 (Applet) 프로그램서블릿 (Servlet) 프로그램

객체지향프로그래밍 강원대학교 19/37

• 애플릿 (Applet) 프로그램

– 클라이언트의 웹 검색기에서 실행되는 프로그램– 작고 간단한 응용에 적합

클라이언트 서버

검색기에서 애플릿 실행

HTML 페이지 요청

페이지와 애플릿 다운로드

HTML 애플릿

예 : http://www.mnh.si.edu/arctic/game/16 개의 사각형을 뒤집어 그림을 맞추는 게임을 할 수 있는데이 게임프로그램이 애플릿으로 구현되어 있음

객체지향프로그래밍 강원대학교 20/37

• 서블릿 (Servlet) 프로그램

– 상황 ( 클라이언트가 전송한 요청 메시지 내에 들어 있는 파라미터들 ) 에 맞춰 서버 내의 서블릿이 실행한 결과를 HTML 문서 형태로 클라이언트에게 반환

클라이언트 서버

검색기인터넷

HTML 문서 요청

실행결과 (HTML)

HTML 서블릿

서블릿 엔진( 서블릿 실행 )

객체지향프로그래밍 강원대학교 21/37

프로그램 작성 , 컴파일 , 실행 과정

• 임의의 텍스트 편집기로 프로그램을 작성하여 파일로 저장

– 파일 하나에는 하나의 public 클래스가 정의됨– public 클래스 이름을 파일 이름과 같게 함

• (Hello 라는 클래스를 정의한 파일의 이름은 Hello.java)

객체지향프로그래밍 강원대학교 22/37

프로그램 작성 , 컴파일 , 실행 과정

• 소스코드를 컴파일하여 바이트코드를 만듦– javac Hello.java

Hello.class 파일이 생성됨컴 파 일 할 때는 파 일 의 첨자 (.java) 를 반 드 시 붙여줌

Hello.class 파일 내에 바이트코드가 들어 있음

• 바이트 코드를 실행시킴– java Hello

• 실행시킬 때는 파일의 첨자를 붙이지 않고 클래스 이름만 지정해 줌

객체지향프로그래밍 강원대학교 23/37

public class Hello {

public static void main (String[] args) {

System.out.print(“Hello!”);

}

}

프로그램 예 1 – Hello.java

Hello 라는 이름의 클래스를

중괄호 {} 안의 내용과 같은 것으로 정의함

•이 프로그램을 Hello.java 파일에 저장 ( 파일 이름이 대소문자까지 맞춰 정확해야 함 )

객체지향프로그래밍 강원대학교 24/37

예 2 - HelloTester.java

1: public class HelloTester 2: { 3: public static void main(String[] args) 4: { 5: // Display a greeting in the console window 6: 7: System.out.println("Hello, World!"); 8: } 9: }

OutputHello, World!

객체지향프로그래밍 강원대학교 25/37

자바 개발 환경

J2SE 자바 표준 개발 환경에 포함되어 있는 도구자바 번역기 : javac자바 해석기 : java자바 디버거 : jdb자바 문서 생성기 : javadoc자바 압축 도구 : jar

• J2SE 는 GUI(Graphical User Interface) 형 태 의 개발환경을 제공하지 않음

• 통합환경 : 전문적인 자바 프로그램을 개발하기 위한 환경

객체지향프로그래밍 강원대학교 26/37

객체지향프로그래밍 강원대학교 27/37

HelloTester in an IDE

객체지향프로그래밍 강원대학교 28/37

자바 통합환경 예• Eclipse (http://www.eclipse.org)• Java Studio Creator

(http://developers.sun.com/prodtech/javatools/jscreator)• JBuilder (http://www.borland.com/jbuilder)• Viaual Cafe (http://www.visualcafe.com)

• Visual Age for Java (http://www.ibm.com/java)

객체지향프로그래밍 강원대학교 29/37

Application 을 실행시키면

• JVM 이 main 메소드를 찾아 실행

• 모든 자바 애플리케이션에는 한 개 이상의 클래스가 있어야 하며 한 개 이상의 main 메소드가 있어야 함

main 메소드 (method)

public static void main (String[] args) {

// 문장들}

객체지향프로그래밍 강원대학교 30/37

문장 (Statement)

• 문장의 종류– 선언– 대입– 메소드 호출– 기타

int x;

String name;

double d;

x = 3;

name = “Dirk”;

System.out.print(“x is “ + x);

double d = Math.random();

// 주석은 이렇게 씁니다 .

/* 이렇게도

쓰지요 . */

/** 이런 것도 있습니다 . */

객체지향프로그래밍 강원대학교 31/37

간단한 문법 요약• 모든 문장은 세미콜론으로 끝남

x = x + 1;• 한 줄짜리 주석은 두 개의 슬래시로 시작

// 주석입니다 .• 공백 문자가 많이 삽입되어도 문제 없음

x = 3;• 한 문장을 여러줄에 걸쳐 적어도 문제 없음• 클래스와 메소드를 정의하는 부분은 한 쌍의 중괄호 안에 들어 감

public void go() {

// 코드가 들어갈 자리}

• 대문자 소문자 구분

객체지향프로그래밍 강원대학교 32/37

자바 코드의 구조

Application

클래스 파일

메소드 1

메소드 2

public class Dog {

void bark() {

statement1; // 문장

statement2;

}

void run() {

statements;

}

}

public class Dog {

void bark() {

statement1; // 문장

statement2;

}

void run() {

statements;

}

} bark, run: 클래스 Dog 가 갖는 메소드들

Dog.java

Application 소스 코드는 보통 여러개의 클래스 파일들로 구성됨

객체지향프로그래밍 강원대학교 33/37

print 과 println

System.out.println(“Kangwon”);System.out.print(“kangwon”);

• println 은 주어진 문자열을 출력한 다음 줄바꿈 ( 문자열 출력 후 ‘ \n’ 을 추가로 출력해 주는 셈임 )

• print 는 주어진 문자열만 출력

객체지향프로그래밍 강원대학교 34/37

메소드 호출 (Method call)

System ClassSystem.out Objectprintln Method

객체지향프로그래밍 강원대학교 35/37

Errors

• Syntax errors

– Detected by the compiler

• Logic errors

– Detected (hopefully) through testing

System.ouch.print(". . .");System.out.print("Hello);

System.out.print("Hell");

객체지향프로그래밍 강원대학교 36/37

The Compilation Process

객체지향프로그래밍 강원대학교 37/37

The Edit—Compile—Loop Test