객체지향프로그래밍
DESCRIPTION
객체지향프로그래밍. 2008 년 1 학기 강원대학교 컴퓨터학부 담당교수 : 정충교. 강사진. 담당교수 : 정충교 연구실 : 공대 6 호관 503 호 전화 : 033-250-6325 이메일 : [email protected] 조교 : 연구실 : 공대 6 호관 518 호 제 1 분반 : 우철호 [email protected] 제 2 분반 : 장걸 [email protected]. 강의 목표와 지향. 자바 언어를 통해 객체지향프로그래밍 기초 능력을 기른다 . - PowerPoint PPT PresentationTRANSCRIPT
객체지향프로그래밍 강원대학교 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
객체지향프로그래밍 강원대학교 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) 형 태 의 개발환경을 제공하지 않음
• 통합환경 : 전문적인 자바 프로그램을 개발하기 위한 환경
객체지향프로그래밍 강원대학교 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 는 주어진 문자열만 출력
객체지향프로그래밍 강원대학교 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");