제1장 서론
주요 강의 내용 객체-지향 소프트웨어 개발 문제 해결(problem solving) 프로그램 설계, 구현, 테스트 객체-지향 개념 클래스(classes) 객체(objects) 캡슐화(encapsulation) 상속(inheritance) 다형성(polymorphism) 그래픽 사용자 인터페이스(graphical user interfaces) Java 프로그래밍 언어 © 2004 Pearson Addison-Wesley. All rights reserved
서론 1장 내용: 프로그래밍 과 프로그래밍 언어 자바 소개 객체-지향 개념 개요 © 2004 Pearson Addison-Wesley. All rights reserved
Outline Java 프로그래밍 언어 프로그램 개발 객체-지향 프로그래밍 © 2004 Pearson Addison-Wesley. All rights reserved
Java 시작 NCSA Mosaic(1994) - first browser: Big Bang of the Web Web Browser may provide us what we want such as platform independence, security James Gosling WebRunner Browser implemented by Java Java(1995.5) © 2004 Pearson Addison-Wesley. All rights reserved
Java 특장점 플랫폼 독립성(Platform Independence) 풍부한 Java 표준 API JVM과 Java API가 구현된 곳은 어디서나 수행가능 풍부한 Java 표준 API 새로운 언어에 대한 요구 반영 객체-지향 개념을 충분히 반영 Applet를 이용한 웹 페이지와 연동 자동 쓰레기 수집(automatic garbage collection) 좋은 무료 개발 환경 JDK(Java Development Kit) © 2004 Pearson Addison-Wesley. All rights reserved
J2ME (Java 2 Micro Edition) Servers Workstations PCs Thin Clients Battery Powered Card HotSpot JVM KVM Card VM Java Classes Smart Card Profile CDC Foundation Class TV Screen Phone Car CLDC Core Class MIDP Kitty- Hawk DojaP J2EE J2SE J2ME (Java 2 Micro Edition) Embedded Space CVM © 창병모
Java 프로그래밍 언어 Java 프로그래밍 언어 프로그램 작성에 사용되는 단어와 기호 정의 프로그램 작성에 사용되는 단어와 기호 정의 유효한 프로그램 문장(statement)을 만드는 (단어, 기호 조립) 규칙 정의 Java 프로그래밍 언어 Sun Microsystems, 1995 © 2004 Pearson Addison-Wesley. All rights reserved
Java 프로그램 구조 Java 프로그래밍 언어: Java 애플리케이션 반드시 Main 메쏘드를 포함해야 한다. 프로그램 하나 혹은 그 이상의 클래스들로 구성된다. 클래스 하나 혹은 그 이상의 메쏘드들을 포함한다. 메쏘드 프로그램 문장들을 포함한다. Java 애플리케이션 반드시 Main 메쏘드를 포함해야 한다. © 2004 Pearson Addison-Wesley. All rights reserved
Lincoln.java //******************************************************** // Java 애플릿케이션의 기본 구조를 보여준다. public class Lincoln { //------------------------------------------- // 대통령의 말씀을 프린트한다 public static void main (String[] args) System.out.println (“A quote by Abraham Lincoln:"); System.out.println (“Whatever you are, be a good one."); } // method main } // class Lincoln © 2004 Pearson Addison-Wesley. All rights reserved
Java 프로그램 구조 // 클래스에 대한 주석(코멘트) public class MyProgram { // 클래스에 대한 주석(코멘트) public class MyProgram { } 클래스 머리(class header) 클래스 본체(class body) 주석은 어디든지 가능 © 2004 Pearson Addison-Wesley. All rights reserved
Java 프로그램 구조 // 클래스에 대한 주석 public class MyProgram { // 메쏘드에 대한 주석 // 클래스에 대한 주석 public class MyProgram { } // 메쏘드에 대한 주석 public static void main (String[] args) { } 메쏘드 머리 (method header) 메쏘드 본체(method body) © 2004 Pearson Addison-Wesley. All rights reserved
코멘트/주석(Comments) 인라인 문서(inline documentation)라고도 한다. 프로그램의 목적과 처리 단계를 설명 프로그램 실행과는 무관 3 형태의 Java 코멘트 // 이 줄 끝까지 코멘트 /* this comment runs to the terminating symbol, even across line breaks */ /** 한글 코멘트도 가능 */ © 2004 Pearson Addison-Wesley. All rights reserved
식별자(Identifiers) 식별자 ? 식별자 구성 규칙 관례 프로그램에서 사용하는 단어 혹은 이름 프로그래머가 선택할 수 있음 식별자 구성 규칙 문자, 숫자, 밑줄문자(_)로 구성 숫자로 시작할 수 없음 대소문자 구별(case sensitive ) Total, total, TOTAL 관례 title case for class names - Lincoln upper case for constants - MAXIMUM © 2004 Pearson Addison-Wesley. All rights reserved
예약어(Reserved Words) 미리 정의된 특별한 식별자 Java 예약어 abstract boolean break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while © 2004 Pearson Addison-Wesley. All rights reserved
공백(White Space) 공백 공백을 이용하여 한 프로그램을 여러 포맷으로 작성 가능 공백문자(Space), 개행문자(new line), 탭 문자(tab) 단어와 기호를 분리하는데 사용 불필요한 공백은 무시 공백을 이용하여 한 프로그램을 여러 포맷으로 작성 가능 적절히 사용해서 읽기 쉽게 작성해야 함. © 2004 Pearson Addison-Wesley. All rights reserved
Lincoln2.java //******************************************************************** // 적법하기는 하지만 서툴게 편집된 프로그램을 보여준다. public class Lincoln2{public static void main(String[]args){ System.out.println("A quote by Abraham Lincoln:"); System.out.println("Whatever you are, be a good one.");}} © 2004 Pearson Addison-Wesley. All rights reserved
Lincoln3.java //******************************************************************** // 서툴게 편집된 또 다른 적법한 프로그램을 보여준다. public class Lincoln3 { public static void main ( String [] args ) { System.out.println ( "A quote by Abraham Lincoln:" ) ; System.out.println ( "Whatever you are, be a good one." ) ; } } © 2004 Pearson Addison-Wesley. All rights reserved
Outline Java 프로그래밍 언어 프로그램 개발 객체-지향 프로그래밍 © 2004 Pearson Addison-Wesley. All rights reserved
프로그램 개발 프로그램 개발 과정 소프트웨어 도구를 사용할 수 있음. (Java) 같은 특정 언어로 프로그램 작성 프로그램을 컴퓨터가 실행할 수 있는 형식으로 번역 일어날 수 있는 여러 종류의 오류를 찾아내고 수정 소프트웨어 도구를 사용할 수 있음. © 2004 Pearson Addison-Wesley. All rights reserved
언어 수준 3 수준의 프로그래밍 언어 CPU마다 고유의 기계어가 있다. 기계어(machine language) 어셈블리어(assembly language) 고급 언어(high-level language) CPU마다 고유의 기계어가 있다. 다른 수준의 언어는 사람이 쉽게 사용할(읽고/쓸) 수 있도록 만들었다. © 2004 Pearson Addison-Wesley. All rights reserved
프로그래밍 언어 CPU마다 고유의 기계어가 있다. 프로그램 번역 컴파일러(compiler) 프로그램은 실행 전에 기계어로 번역되어야 한다. 컴파일러(compiler) 원시 코드(source code)를 특정 목적 언어로 번역하는 소프트웨어 흔히 목적 언어는 CPU의 기계어이다. Java 는 좀 다른 방법을 사용한다. © 2004 Pearson Addison-Wesley. All rights reserved
Java 번역 Java 컴파일어 바이트코드(bytecode) 바이트코드 인터프리터(interpreter) 특정 CPU의 기계어는 아님 가상의 저수준 코드 바이트코드 인터프리터(interpreter) 해석해서 실행하는 소프트웨어 © 2004 Pearson Addison-Wesley. All rights reserved
Java 번역 Java source code Java bytecode Java compiler Bytecode interpreter Bytecode compiler Machine code © 2004 Pearson Addison-Wesley. All rights reserved
Java Virtual Machine 자바 가상 기계 JVM Java 프로그램 실행 환경 Bytecode interpreter를 포함하고 있음 다양한 OS 환경 하에서도 동작됨 웹 브라우저에 내장되어 있음 OS JavaVM Java 프로그램 © 2004 Pearson Addison-Wesley. All rights reserved
개발 환경(Development Environment) Java 프로그램 개발 환경 Sun Java Development Kit (JDK) + EditPlus Sun NetBeans IBM Eclipse Borland JBuilder Monash BlueJ 편집, 컴파일, 실행 과정은 유사 © 2004 Pearson Addison-Wesley. All rights reserved
기본적인 프로그램 개발 과정 오류 오류 프로그램 편집 및 저장 프로그램 컴파일 프로그램 실행 및 결과 평가 © 2004 Pearson Addison-Wesley. All rights reserved
오류(Error) 3 종류 프로그래밍 오류 컴파일-시간 오류(compile-time errors) 컴파일러가 찾아내는 구문 오류 등의 오류 실행 파일을 만들 수 없다. 실행-시간 오류(run-time errors) 프로그램 실행 중에 발생된 문제 0으로 나누기 프로그램 종료 논리 오류 (logical errors) 실행은 되나 잘못된 결과 생성 © 2004 Pearson Addison-Wesley. All rights reserved
Outline Java 프로그래밍 언어 프로그램 개발 객체-지향 프로그래밍 © 2004 Pearson Addison-Wesley. All rights reserved
문제 해결(Problem Solving) 프로그램 작성 목적은 어떤 문제 해결 문제 해결 과정 문제 이해 해법(solution) 설계 다른 생각으로 해법 개선 해법 구현 테스트 © 2004 Pearson Addison-Wesley. All rights reserved
문제 해결(Problem Solving) 해법 설계의 핵심 문제를 관리 가능한 조작들로 나눈다 Divide and Conquer ! 소프트웨어 작성 해법의 각 부분을 담당하는 여러 조작으로 나누어 설계한다. 객체 지향 방법(object-oriented approach) 일종의 해법 분해 과정 문제에 대한 해법을 객체와 클래스라는 조각으로 분해 © 2004 Pearson Addison-Wesley. All rights reserved
객체-지향 프로그래밍 Java는 객체-지향 프로그래밍 언어이다. (object-oriented programming language) 객체는 Java 프로그램에서 기본적인 개체(entity)이다. 객체는 실세계의 개체를 나타내는데 사용된다. 예 회사의 직원을 나타내는 객체 각 직원 객체가 직원과 관련된 데이터 관리 및 처리를 담당한다. © 2004 Pearson Addison-Wesley. All rights reserved
객체(Objects) 객체 은행 계좌 상태 은행 계좌 동작 객체의 동작이 상태를 바꿀 수 있다. 상태(state) - 특성을 나타내는 동작(behaviors) - 할 수 있는 혹은 될 수 있는 은행 계좌 상태 번호, 잔액, 거래 내역 은행 계좌 동작 입금, 출금 객체의 동작이 상태를 바꿀 수 있다. © 2004 Pearson Addison-Wesley. All rights reserved
클래스(Classes) 클래스 클래스 내부 클래스 vs. 객체 객체에 대한 정의 객체에 대한 설계도 상태를 나타내기 위한 변수 동작을 정의하는 메쏘드 main 메쏘드 포함하는 클래스가 전체 프로그램을 대표 클래스 vs. 객체 클래스는 개념을 나타내고 객체는 그 개념의 실체를 나타낸다. 한 클래스로 부터 여러 객체들을 생성할 수 있다. © 2004 Pearson Addison-Wesley. All rights reserved
객체와 클래스 클래스 (개념) 객체 (실체) 한 클래스로부터 여러 객체들 생성 Bank Account John’s Bank Account Balance: $5,257 객체 (실체) Bill’s Bank Account Balance: $1,245,069 Mary’s Bank Account Balance: $16,833 한 클래스로부터 여러 객체들 생성 © 2004 Pearson Addison-Wesley. All rights reserved
상속(Inheritance) 상속을 통해 한 클래스로부터 다른 클래스 유도 가능 상속 관계에 따라 클래스 계층구조 형성 Bank Account Account Charge Account Savings Account Checking Account © 2004 Pearson Addison-Wesley. All rights reserved
요약 프로그래밍 언어 자바 소개 객체-지향 개념 개요 © 2004 Pearson Addison-Wesley. All rights reserved