소개 - 강원대학교

Download Report

Transcript 소개 - 강원대학교

자바프로그래밍
2014년 가을학기
강원대학교 컴퓨터학부
담당교수: 정충교
1
강사진
• 담당교수: 정충교
– 연구실: 101동 503호
– 전화: 033-250-6325
– 이메일: [email protected]
• 조교:
2
강의 목표와 지향
• 객체지향프로그래밍의 핵심 개념을 이해하고 설명할 수 있
게 된다.
• 다섯 개 이내의 클래스로 이루어진 간단한 프로그램을 혼자
서 완성할 수 있게 된다.
• 간단한 문제에 대해 이를 클래스 단위로 설계하고 구현하여
그 해를 완성할 수 있게 된다.
• API 문서를 참고하여 다른 사람이 작성한 클래스들을 자신
의 프로그래밍에 활용할 수 있게 된다.
• C++, C#, Python, Ruby, VB.NET 등 다른 객체지향 언어들
을 쉽게 배울 수 있게 된다.
3
사전에 필요한 지식
• 프로그래밍기초, 혹은 C언어, Python, Basic 등 다른 프
로그래밍 언어를 이용하는 프로그래밍 과목
• 데이터 타입, 변수, 연산, 조건문, 반복문, 함수(메소드)
호출, 배열 등의 개념을 이해하고 있어야 하며 이들을 활
용한 기본적인 프로그래밍 연습이 되어 있어야 함.
• 매 강의가 실습실에서 있으며 실제 프로그램 개발 능력
배양에 역점을 둔다.
4
교재
• 자바 프로그래밍 기초부터 하나씩, Ralph Bravaco 등 지
음, 김응성 등 번역, ITC, 2010.
• 핵심자바 7판, Cay Horstmann 지음, 최선웅 등 번역, 한
티미디어, 2014.
• 위 교재들 중 어느 하나를 따라 차례로 공부하는 것이 아
니므로 어느 한 가지를 꼭 구입해야 하는 것은 아님.
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
프로그램을 실행할 컴퓨터
기종과 무관한 컴파일러(번역기)
한 종류만 존재함
프로그램을 실행할 컴퓨터
기종과 무관한 바이트코드가
생성됨
클라이언트(JVM)
서버
소스코드
*.java
번
역
기
바이트
코드
*.class
해
석
기
실행결과
인터넷
자바 바이트코드는 자바 가상기계가
설치된 어떤 컴퓨터에서도 실행 가능하며
네트워크를 통해 쉽게 배포할 수 있다.
윈도PC
해
석
기
실행결과
핸드폰
interpreter
17
자바 프로그램
컴파일러
개발환경
바이트 코드
인터프리터
핸드폰
인터프리터
Macintosh 컴퓨터
인터프리터
실행환경
Windows PC
18
JDK: Java Development Kit
JRE: Java Runtime Environment
Java SE
개발도구
라이브러리 (API)
VM: Virtual Machine (가상기계)
19
자바 개발 도구
 J2SE 자바 표준 개발 환경에 포함되어 있는 도구
 자바 번역기 : javac
 자바 해석기 : java
 자바 디버거 : jdb
 자바 문서 생성기 : javadoc
 자바 압축 도구 : jar
• JDK는 GUI(Graphical User Interface) 형태의 개발환경을 제공하
지 않음
20
The Compilation Process
21