자바프로그래밍 2014 년 가을학기 강원대학교 컴퓨터학부 담당교수 : 정충교 1
강사진 담당교수 : 정충교 – 연구실 : 101 동 503 호 – 전화 : – 이메일 : 조교 : 2
강의 목표와 지향 객체지향프로그래밍의 핵심 개념을 이해하고 설명할 수 있 게 된다. 다섯 개 이내의 클래스로 이루어진 간단한 프로그램을 혼자 서 완성할 수 있게 된다. 간단한 문제에 대해 이를 클래스 단위로 설계하고 구현하여 그 해를 완성할 수 있게 된다. API 문서를 참고하여 다른 사람이 작성한 클래스들을 자신 의 프로그래밍에 활용할 수 있게 된다. C++, C#, Python, Ruby, VB.NET 등 다른 객체지향 언어들 을 쉽게 배울 수 있게 된다. 3
사전에 필요한 지식 프로그래밍기초, 혹은 C 언어, Python, Basic 등 다른 프로 그래밍 언어를 이용하는 프로그래밍 과목 데이터 타입, 변수, 연산, 조건문, 반복문, 함수 ( 메소드 ) 호 출, 배열 등의 개념을 이해하고 있어야 하며 이들을 활용 한 기본적인 프로그래밍 연습이 되어 있어야 함. 매 강의가 실습실에서 있으며 실제 프로그램 개발 능력 배 양에 역점을 둔다. 4
교재 자바 프로그래밍 기초부터 하나씩, Ralph Bravaco 등 지 음, 김응성 등 번역, ITC, 핵심자바 7 판, Cay Horstmann 지음, 최선웅 등 번역, 한티 미디어, 위 교재들 중 어느 하나를 따라 차례로 공부하는 것이 아 니므로 어느 한 가지를 꼭 구입해야 하는 것은 아님. 5
평가 중간 : 25%, 기말 : 35%, 과제 : 20%, 출석 : 10%, 기타 : 10% 중간고사, 기말고사는 각각 이론시험, 실기시험을 봄 1/3 이상 결석하는 경우 F 6
Object-oriented programming and Java 7
객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 컴퓨터 프로그래밍 패러다임의 하나 절차적 프로그래밍 (procedural programming) – 컴퓨터 “ 명령어의 순차적 나열 ” 을 통해 문제 해결 객체지향프로그래밍 (object-oriented programming) – 실 세계의 사물들을 컴퓨터 내에서 “ 객체 " 로 모델링함 으로써 실 세계와 유사한 방식으로 문제 해결 – 객체는 서로 메시지를 주고 받고, 데이터를 처리한다. 8
Object-oriented programming languages Java, C++, Javascript, C#, Perl, Python, Object- C, Smalltalk, Delphi –JavaScript 는 Java 와 무관한 언어 9
Object-oriented programming 유지보수가 쉽다. 실세계를 모델링하므로 직관적이다. 신뢰성과 유연성 재사용성 모든 문제에 대해 최선은 아니다. 능숙해지려면 노력과 경험이 필요하다. 10
객체와 클래스 (Objects and Classes) Bicycle 클래스의 instance 고양이 클래스의 인스턴스 class 는 객체를 만들기 위한 틀이다. 객체들 11
자바언어의 특징 단순 (simple) –C 나 C++ 에서 프로그래머에게 많은 혼란을 주는 요소들을 제거 – 포인터, 구조체 등을 사용하지 않음 – 자동적인 쓰레기 수집 (garbage collection) 기능을 제공 객체지향 (Object-Oriented) – 소프트웨어의 재사용과 정보의 캡슐화 등 장점을 제공 –Object 우리말로는 객체 혹은 개체로 번역되고 있음 – 객체 ( 客體 ): 목적물, 작용의 대상 – 개체 ( 個體 ): 따로따로 떨어진 낱낱의 물체 12
자바언어의 특징 인터프리터 (Interpreter) 에 의해 실행 – 자바 소스코드는 컴파일을 통해 바이트 코드로 번역됨 – 바이트 코드를 실행시키면 바이트 코드 해석기 (interpreter) 에 의 해 기계어 코드가 만들어지면서 이 기계어 코드가 실행됨 Java program 컴파일러 인터프리터 컴파일 실행 바이트코드 컴퓨터하드웨어 기계어코드 13
C 언어의 경우 : 소스코드가 기계어로 바로 번역됨 프로그램을 실행할 컴퓨터 (target machine) 에 따라 컴파일러가 달 라지고 다른 기계어코드가 생성됨 C program 컴파일러 컴파일 실행 기계어코드 컴퓨터하드웨어 14
Java program 컴파일러 인터프리터 컴파일 실행 바이트코드 컴퓨터하드웨어 기계어코드 C program 컴파일러 컴파일 실행 기계어코드 컴퓨터하드웨어 자바 C/C++ 구조중립적 (architecture neutral) 이고 이식성 (portable) 이 높음 15
자바언어의 특징 구조중립적 (architecture neutral) 이고 이식성 (portable) 이 높음 – 바이트코드 인터프리터를 중심으로 몇가지 부가기능을 갖춘 소프트웨어를 자바가상기계 (JVM) 라고 부름 – 자바프래그램은 한번 작성 / 컴파일되면 JVM 이 설치된 모 든 종류의 컴퓨터에서 실행 가능 – 시스템 구조 중립적으로 설계됨 (int 는 항상 32 비트 ) 16
소스코드 *.java 서버 클라이언트 (JVM) 인터넷 번역기번역기 해석기해석기 실행결과 해석기해석기 자바 바이트코드는 자바 가상기계가 설치된 어떤 컴퓨터에서도 실행 가능하며 네트워크를 통해 쉽게 배포할 수 있다. 바이트 코드 *.class 윈도 PC 핸드폰 프로그램을 실행할 컴퓨터 기종과 무관한 바이트코드가 생성됨 프로그램을 실행할 컴퓨터 기종과 무관한 컴파일러 ( 번역기 ) 한 종류만 존재함 interpreter 17
컴파일러 바이트 코드 자바 프로그램 인터프리터 핸드폰 Macintosh 컴퓨터 Windows PC 개발환경 실행환경 18
Java SE 19 JDK: Java Development Kit JRE: Java Runtime Environment 개발도구 라이브러리 (API) VM: Virtual Machine ( 가상기계 )
자바 개발 도구 J2SE 자바 표준 개발 환경에 포함되어 있는 도구 자바 번역기 : javac 자바 해석기 : java 자바 디버거 : jdb 자바 문서 생성기 : javadoc 자바 압축 도구 : jar JDK 는 GUI(Graphical User Interface) 형태의 개발환경을 제공 하지 않음 20
The Compilation Process 21