[INA470] Java Programming Youn-Hee Han

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
어서와 Java는 처음이지! 제5장 클래스, 객체, 메소드.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
Object Oriented Programming
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
C++ Programming: Sample Programs
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
자바 5.0 프로그래밍.
제7장 클래스와 객체.
Java 6장. 클래스 : 속성 public class SumTest {
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
10장. 예외처리.
자바 5.0 프로그래밍.
11장. 1차원 배열.
13. 연산자 오버로딩.
제1장 통계학이란 무엇인가 제2장 자료와 수집 제3장 자료 분석 방법
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
27장. 모듈화 프로그래밍.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
3.1 객체지향(object-oriented)과 절차지향(procedural-oriented) 3.2 객체(object)
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조
7 생성자 함수.
6 객체.
Presentation transcript:

[INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr 07. 객체지향소개와 문자열 [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr

1. 객체지향이란? 객체지향 방법 (Object-oriented Method) 실제 세계를 모델링하여 소프트웨어를 개발하는 방법 다양한 소프트웨어 객체들을 조합하여 원하는 기능을 구현

1. 객체지향이란? 프로그래밍 방법의 변천 1960년대 1970년대 1980년대 복잡한 소프트웨어인 경우 개발 기간을 넘기는 일이 허다함 소프트웨어 개발 비용이 높음 1970년대 구조적 프로그래밍 (Structured Programming) 기본적인 구조 (순차, 반복, 선택)만을 이용 모듈화 (Modularization) 기법 사용 하지만, 구조적 프로그래밍은 데이터보다는 알고리즘(절차)에 집중하는 방법으로서 프로그램의 복잡도가 커지면 역시 여러 문제 발생 C, Pascal 1980년대 객체 지향 프로그래밍 (Object-oriented Programming) 데이터와 알고리즘을 하나의 덩어리로 묶어서 생각 현재 가장 각광받는 프로그래밍 기술

1. 객체지향이란? 구조적 프로그래밍 vs. 객체지향 프로그래밍 Structured OO 계산기 프로그램 Structured 기능에 따라 ▷입력기능 ▷계산기능 ▷출력기능 각각의 기능을 함수로 구현 계산기를 이루는 오브젝트로 세분 ▷Keyboard ▷LCD ▷CPU 각각의 오브젝트를 클래스로 구현 Structured OO main() { Input(); Compute(); Output(); } Input() // 입력 기능 구현 Compute() // 계산 기능 구현 Output() // 출력 기능 구현 class Calculator // Keyboard, LCD, // CPU 를 가진다 class Keyboard // Keyboard 속성, // 기능 구현 class LCD // LCD 속성, 기능 구현 class CPU // CPU 속성, 기능 구현 Structured OO 함수로 이루어짐 클래스로 이루어짐 프로그램을 기능 단위로 세분 프로그램을 오브젝트 단위로 세분 중형 프로그램 작성에 적합 대형 프로그램 작성에 적합 C C++, Java

1. 객체지향이란? 절차 지향 vs. 객체 지향 [Note] Java나 C++ 모두 객체지향 언어이지만 구조적, 절차적 프로그래밍 기법을 전혀 사용하지 않는 것은 아니다. 객체의 내부를 설계할 때나 main 함수 등을 작성할 때에는 구조적, 절차적 기법을 활용해야 한다. 데이터가 여러 함수에 의하여 함께 이용되는 공유데이터 형식이다.

2. 객체 객체 (Object) 현실 세계의 객체들을 소프트웨어 상에서 구현한 것 객체는 그 객체의 상태를 나타내는 변수와 행동을 구현하는 메소드의 소프트웨적인 모듈이다. 객체 = 상태(State) + 행위, 동작(Behaviors) = 속성(Property or Attributes) + 프로시저(Procedure) = 변수(Variable) + 메소드(Methods)

2. 객체 객체 (Object) 원자의 핵처럼 안쪽은 속성들이 있고, 외부에 메소드들이 둘러싸고 있다. 이렇게 내부에 있는 속성은 외부로부터 보호되어 있는데 이것을 캡슐화(encapsulation)라고 한다. 일반적으로 캡슐화는 ‘외부로부터 자세한 내부의 정보 및 여러 가지 알고리즘을 숨긴다’는 의미 속성이름 자동차 객체 a 자동차 객체 b 색상 흰색 검정색 번호 40너 4837 30겨 1287 연식 2005 2008 브레이크 유압 x y

3. 메시지 메시지 (Message) 소프트웨어 객체는 메시지(message)를 통해 다른 소프트웨어 객체와 통신하고 서로 상호 작용한다. 예] 운전자 객체  자동차 객체

3. 메시지 메시지 (Message) 메시지와 메소드 호출 메소드(Method)는 해당 객체의 행동 방식을 정의하기 위해 만들어지며 객체들 사이에 서로 어떤 기능을 수행하라고 명령할 때 쓰이게 된다. 메소드 호출을 객체 지향 개념을 설명할 때 메시지를 보내는 것으로 비유 a.changeGear(3);

3. 메시지 메시지 (Message) 원격 메소드 호출 (RMI, Remote Method Invocation) 객체들이 네트워크상의 서로 다른 위치에 존재할 때에도 그 객체들이 서로 메시지를 주고 받을 수 있는 기능 즉, 각 객체들이 하나의 컴퓨터 또는 하나의 프로세스 안에 있을 필요 없다. 분산 객체 (Distributed Objects) 자바는 분산 객체 및 RMI를 지원하는 좋은 언어

임의의 클래스는 특정 객체를 생성하는 공장이다. 4. 클래스 클래스 객체를 생성해내기 위한 설계도 같은 타입의 객체들에게 공통적인 변수와 메소드를 정의하는 형틀(template) 또는 청사진(blueprint) 클래스와 객체의 관계는 '자동차 공장'과 '실제 자동차'의 관계와 같다. 임의의 클래스는 특정 객체를 생성하는 공장이다.

4. 클래스 클래스

4. 클래스 클래스와 객체 Car 클래스로부터 Car 객체 a, b를 생성해내는 Java 소스 코드 예 같은 클래스에서 생성된 객체들은 그 나름대로 독립된 속성 값들을 가진다는 점이 중요하다. 또한, 프로그래머가 한 객체의 속성 값들을 변경한다 할지라도 다른 객체의 속성 값들은 변경되지 않는다. 각각의 속성 이름은 같지만 각 속성 값은 모두 다르다. 메소드는 각각의 객체마다 동일한 형태로 존재한다. Car a = new Car("흰색", "40너 4837", 2005, x); Car b = new Car("검정색", "30겨 1287", 2008, y); [object과 instance 용어 정리] object: 보통 Object-Oriented 이론에서 말하는 객체를 지칭할 때나 일반적인 객체를 통칭할 때 사용 instance: 클래스에서 생성된 객체(object)를 특별히 지칭할 때 사용.

4. 클래스 클래스와 객체 인스턴스 (객체) 객체이름 데이터 메소드 클래스 이름 학생1=new 학생(이기쁨,남자,….); 속성 성별 학과 학년 수강신청 시험보기 성적조회 클래스 이름 학생1=new 학생(이기쁨,남자,….); 학생2=new 학생(신예진,여자,….); 학생3=new 학생(이정순,여자,….); 속성 메소드 객체생성(instantiation) 객체이름 데이터 메소드 학생1 이기쁨 남자 컴퓨터공학과 2학년 수강신청 시험보기 성적조회 학생2 신예진 여자 경영학과 3학년 수강신청 시험보기 성적조회 학생3 이정순 여자 철학과 4학년 수강신청 시험보기 성적조회 인스턴스 (객체)

5. 객체지향의 장점 객체 지향 프로그래밍의 기본 특징 아래 5가지의 특징은 결국 Real World를 OO 방식으로 표현하기 위한 도구(개념)이다. Encapsulation 표현하고자 하는 자료와 동작을 하나의 단위(객체)로 묶어서 구현의 세부 사항을 객체 내부에 감추는 것 Information Hiding 내부의 데이터를 외부에서 마음대로 접근하지 못하게 숨기는 것 Abstraction 사용법과 내부 구현 정보를 구분하는 것 Inheritance 이미 만들어진 클래스를 파생시켜 새로운 클래스를 정의하는 기법. Real World의 계층 구조를 표현하는데 사용된다. Polymorphism 사전적 정의: 하나의 집단이 다르게 쓰이는 것 계층적 구조에서, 상위 객체로 하위 객체를 지칭하는 것의 표현(구현)에 필요한 방법론

5. 객체지향의 장점 객체 지향 프로그래밍의 기본 특징 Real World Object 사용법 내부구현 Abstraction 외부 사용자 Information Hiding Encapsulation 보인다 안 보인다 Object-oriented

5. 객체지향의 장점 객체 지향 프로그래밍의 장점 1) 객체 지향 개념은 실생활의 개념과 거의 동일하다는데 가장 큰 이점이 있다. 실세계에서 사람이 동전 및 지폐를 은행에 저금하는 상황이 있다면 이것을 소프트웨어적인 객체로서 사람, 동전, 지폐, 은행으로 표현할 수 있다.

5. 객체지향의 장점 객체 지향 프로그래밍의 장점 2) 소프트웨어 작성이 쉽다 부품을 구입하여 컴퓨터를 조립하듯이 소프트웨어를 작성할 수 있다. 개발시 새롭게 고민되는 문제 각각의 객체들을 직접 만들어서 사용할 것인가? 아니면 남이 만든 것을 사용할 것인가? 기본적으로 객체가 사양 (Specification)을 만족하기만 한다면 내부 기능이 어떻게 구현되어 있는가는 중요하지 않다.

5. 객체지향의 장점 객체 지향 프로그래밍의 장점 3) 코드 재사용이 용이하다. 객체지향언어가 아닌 다른 언어들은 새로운 소프트웨어 개발시 처음부터 모든 것을 다시 개발해야 함. Java는 다른 사람이 작성한 코드를 재사용하는 편리함이 있다. 클래스 정의시에 데이터와 메소드 코드를 함께 묶어서 정리되기 때문 이미 많은 전문가들이 사용하는 좋은 클래스라면 안심하고 가져와 사용할 수 있다. Java 언어는 방대한 양의 패키지 라이브 러리를 제공한다.

5. 객체지향의 장점 객체 지향 프로그래밍의 장점 4) 정보 은닉 (Information Hiding) 임의의 객체는 절대로 다른 객체의 내부 데이터를 직접 조작하지 않는다. 객체간의 상호 작용은 메소드 호출을 이용함으로써 객체 내부 구현의 세부 사항은 외부로부터 감추어진다. 정보 은닉의 이유 프로그램의 다른 부분에 영향을 미치지 않고 쉽게 내부 데이터 및 절차를 변경할 수 있음. 객체 자체의 업그레이드가 용이

5. 객체지향의 장점 객체 지향 프로그래밍의 장점 5) 쉬운 디버깅 (Debugging) 및 유지보수 프로그래머가 작성해야 할 프로그램의 양이 줄어들기 때문에 에러발생 여지가 줄어든다. 기존의 방식으로 몇 천줄, 몇 만줄 이상의 프로그램도 객체 지향 방식을 이용하면 훨씬 적은 양으로 코딩할 수 있다. 각 객체들마다 완벽한 모듈화를 제공하기 하기 때문에 어느 한 곳에서 발생한 에러는 그 곳에서만 수정을 하면 된다.

6. 문자열 객체의 생성과 사용 문자열 객체 자바에서 문자열 (“Hello World!”)는 기초 데이터 타입이 아닌 참조 데이터 타입의 객체 자바에는 문자열 객체를 설계해놓은 String 클래스가 존재

6. 문자열 객체의 생성과 사용 문자열 객체의 생성 String s1 = new String(“Hello World!”); 가장 일반적인 객체 생성 방법 String s2 = “Hello World!”; 오른쪽의 “Hello World!”는 문자열 상수라고 지칭 자바에서 문자열 객체생성에만 허용하는 독특한 형태의 객체 생성법 String s3 = “안녕 Java”; 각문자 H e l o W r d ! 인덱스 1 2 3 4 5 6 7 8 9 10 11 각문자 안 녕 J a v 인덱스 1 2 3 4 5 6

6. 문자열 객체의 생성과 사용 기초형 변수 vs. 참조형 변수

6. 문자열 객체의 생성과 사용 객체의 메소드 호출 도트 연산자 (dot operator) 를 사용하여 메소드를 호출한다. String s = "Hello World!"; int size = s.length(); // size는 12

6. 문자열 객체의 생성과 사용 메소드 사용 예제 마지막에 proverb 를 출력해보자. proverb 라는 문자열 객체에 어떠한 메소드를 호출해도 본래 proverb가 가지고 있는 문자열은 절대로 변경되지 않는다.

6. 문자열 객체의 생성과 사용 문자열 상수 문자열 결합 문자열과 기초 자료형 값의 결합 문자열 상수는 “Hello World!”와 같이 이중 따옴표를 사용하여 표현 문자열 결합 + 연산자 사용 문자열 결합시 + 연산자는 결합 연산자 (Concatenation Operator)라고 지칭됨 문자열과 기초 자료형 값의 결합 문자열과 기초 자료형 값사이의 + 연산자 1) 기초 자료형 값을 문자열로 변환 2) + 연산자는 결합 연산자로 행동 int size = "Hello World!".length(); String a = “Hello ”; String b = “World!”; String c = a + b; System.out.println(“100” + 20); System.out.println(100 + 20);

6. 문자열 객체의 생성과 사용 메소드 사용 예제 2 public class StringTest2 { public static void main(String[] args) { String str1 = "frist string"; String str2 = "Java 프로그래밍!"; System.out.println("str1.length(): " + str1.length()); System.out.println("str2.length(): " + str2.length()); System.out.println("str1.charAt(4): " + str1.charAt(4)); System.out.println("str1.indexOf('s'): " + str1.indexOf('s')); System.out.println("str1.indexOf('s', 4): " + str1.indexOf('s', 4)); System.out.println("str1.indexOf(\"ing\"): " + str1.indexOf("ing")); System.out.println("str1.indexOf(\"st\", 4): " + str1.indexOf("st", 4)); System.out.println("str2.indexOf(\"프로그래밍\"): " + str2.indexOf("프로그래밍")); }