1 / 28

07. 객체지향소개와 문자열

07. 객체지향소개와 문자열. [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr. 1. 객체지향이란 ?. 객체지향 방법 (Object-oriented Method) 실제 세계를 모델링하여 소프트웨어를 개발하는 방법 다양한 소프트웨어 객체들을 조합하여 원하는 기능을 구현. 1. 객체지향이란 ?. 프로그래밍 방법의 변천 1960 년대 복잡한 소프트웨어인 경우 개발 기간을 넘기는 일이 허다함 소프트웨어 개발 비용이 높음 1970 년대

ciara-wong
Download Presentation

07. 객체지향소개와 문자열

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 1. 객체지향이란? 구조적 프로그래밍 vs. 객체지향 프로그래밍

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

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

  7. 2. 객체 • 객체 (Object) • 원자의 핵처럼 안쪽은 속성들이 있고, 외부에 메소드들이 둘러싸고 있다. • 이렇게 내부에 있는 속성은 외부로부터 보호되어 있는데 이것을 캡슐화(encapsulation)라고 한다. • 일반적으로 캡슐화는 ‘외부로부터 자세한 내부의 정보 및 여러 가지 알고리즘을 숨긴다’는 의미

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

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

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

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

  12. 4. 클래스 • 클래스

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

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

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

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

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

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

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

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

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

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

  23. 6. 문자열 객체의 생성과 사용 • 문자열 객체의 생성 • String s1 = new String(“Hello World!”); • 가장일반적인 객체 생성 방법 • String s2 = “Hello World!”; • 오른쪽의 “Hello World!”는 문자열 상수라고 지칭 • 자바에서 문자열 객체생성에만 허용하는 독특한 형태의 객체 생성법 • String s3 = “안녕 Java”;

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

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

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

  27. 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);

  28. 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("프로그래밍")); } }

More Related