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