Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object Oriented Programming

Similar presentations


Presentation on theme: "Object Oriented Programming"— Presentation transcript:

1 Object Oriented Programming
자바 객체 지향 프로그래밍 Object Oriented Programming

2 1. 객체 지향 프로그래밍 개요 2. 절차(함수 기반) 지향 프로그래밍과의 비교 3. 객체 지향 프로그래밍 절차
- 객체 모델링 - 클래스 설계 및 정의 - 인스턴스(소프트웨어 객체) 생성 및 사용 4. 클래스 구성 요소

3 객체지향프로그래밍 개요 객체 지향 프로그래밍(Object Oriented Programming)이란?
현실세계가 객체(명사형의 모든 실체 및 개념)들간에 상호작용에 의해 운영되듯이, 프로그램도 객체라는 독립된 단위로 구성하고, 이 객체들 간의 상호작용에 의해 프로그램이 실행되도록 하는 프로그램 개발 방법 중의 하나이다. 객체지향 프로그래밍 == 현실세계의 모방 객체지향 프로그래밍은 프로그램을 단순히 순차적인 명령어의 흐름으로 보는 시각에서 벗어나 여러 개의 독립된 모듈(객체) 단위로 파악하고, 각각의 객체들이 상호작용함으로 써 데이터를 처리하는 방식이다 객체 지향 프로그래밍의 장점 한번 정의된 객체는 재사용을 통해 개발 생산성을 높일 수 있으며, 유지보수 및 확장이 용이하기 때문에 대규모 프로젝트 개발에 많이 사용된다. 소프트웨어 개발 과정(요구정의 → 분석 → 설계 → 구현 → 테스트/디버깅 → 배치) 상 자연스러운 분석 및 설계가 용이하다. 객체가 중심

4 << 메시지 송수신 >>
객체지향프로그래밍 구성 요소 현실 세계의 객체(Object) 실생활에 존재하는 명사형의 모든 실체(사람, 사물, 개념 등)를 말한다. 예) 컴퓨터, 자동차, 도서, 학생, 학과, 성적, 수강, 주문, 은행 계좌 등 객체는 식별 가능(이름이 존재)하며, 자신과 관련된 정보(속성)와 행위(기능)를 외부에 제공한다 속성 예: 학생의 이름, 학과, 학번 등 기능 예: 시험보기, 보고서 제출 등 클래스(Class) 현실세계의 객체를 프로그램적으로 표현(정의)한 청사진(템플릿) – 객체 추상화 클래스는 객체의 정보 저장을 위한 변수들과 객체의 기능을 정의한 메소드들로 구성된다. 인스턴스(Instance) 클래스로부터 메모리에 생성(할당)된 실체 – 소프트웨어 객체 인스턴스는 자신 고유의 상태정보를 가지며, 클래스에서 정의한 기능을 수행할 수 있다 메시지(Message) 메모리상의 인스턴스들은 각각 독립적이며, 메시지 송수신을 통해 서로 상호작용 한다 하나의 속성만 가지는 것이 아니라 여러 개의 속성을 가질 수 있음 현실세계 객체를 프로그램적으로 표현(정의)하는 단위 = 클래스 우리가 객체를 생성한다고 할 때 생성되는 건 인스턴스 객체 A 객체 B << 메시지 송수신 >> 메소드 호출 및 결과 반환

5 객체지향프로그래밍 구성 요소 3대 기본 요소 현실세계 객체1 추상화 클래스 메모리 생성 인스턴스1 인스턴스 현실세계 객체

6 절차(함수 기반) 지향 프로그래밍과의 비교 절차 지향 프로그래밍(BASIC, COBOL, C 등)
데이터와 그 데이터를 가공하는 함수로 구성 – 함수 중심의 프로그래밍 데이터와 함수가 분리되어 있는 구조 공장의 컨베이어벨트에서 원재료(데이터)가 여러 공정(함수)을 거처 제품이 나오는 구조와 같이 순차적 흐름을 중요시 대량의 데이터를 순차적으로 처리해야 하는 경우 적합하지만 새로운 데이터 추가나 기능(함수) 변경 시 프로그램 전체에 영향을 미칠 가능성이 높다. 객체 지향 프로그래밍(Smalltalk, Java, C++, C#) 데이터와 데이터를 가공하는 메소드를 하나의 객체로 구성하고, 객체들간의 상호작용을 통해 프로그램을 구성 – 객체 중심의 프로그래밍 데이터와 메서드가 통합되어 있는 구조 객체 재사용을 통해 개발 생산성을 높일 수 있으며 유지보수 및 확장이 용이하다.

7 절차적(함수 기반) 프로그래밍과의 비교 데이터  절차 기반 프로그래밍  객체지향 프로그래밍 함수1 함수2 함수3
-데이터와 함수의 분리 -기능중심  객체지향 프로그래밍 -데이터와 메서드의 통합 -데이터중심 프로그램= 자료구조 + 함수 데이터 함수1 함수2 함수3 프로그램 = 객 체 + 객 체 메시지 메소드 데이터(속성) 학생속성 객체 도서대여 출석조회 성적조회 수강신청 하나의 데이터를 수정했어 그럼 하나만 영향이 가는 거지 그것과 상호작용하는 객체들까지 영향이 가는 것은 아님

8 객체 지향 프로그래밍 절차 객체 모델링 클래스 설계 및 정의 인스턴스(소프트웨어 객체) 생성 및 사용
특정한 요구 사항에 따라서 이해하기 쉬운 형태로 표현 프로그램으로 표현하고자 하는 실행활 객체의 속성, 기능, 상호작용 등을 이해하기 쉬운 도형과 기호를 이용하여 표현하는 것 (UML 클래스다이어그램을 이용한 객체 모델 작성) 객체 모델링 클래스 설계 및 정의 실세계의 객체를 프로그램으로 표현(구현)하는 것 클래스를 이용하여 메모리상에 인스턴스를 생성하고, 인스턴스들간의 메시지 교환(메서드 호출)을 통해 프로그램이 실행되도록 하는 단계 인스턴스(소프트웨어 객체) 생성 및 사용

9 객체 모델 (Model) 샘플 현실세계의 자동차와 은행계좌가 가지는 속성과 기능을 UML에서 제공하는 클래스다이어그램을 통해 이해하기 쉽게 표현 소프트웨어 개발 과정 중 분석 및 설계 단계에서 사용되는 클래스다이어그램 Account -accountNum:String -accountOwner:String -passwd:int -restMoney:long +deposit (money:long):long +withdraw(money:long):long +getRestMoney():long +checkPasswd(passwd:int) : boolean 은행계좌 계좌번호 예금주 비밀번호 잔고 등 입금하다 출금하다 잔액을 조회하다 등 클래스 이름 속성 변수명 : 데이터타입 속성 저장을 위한 멤버변수들 기능 메소드 이름 (매개변수명): 데이터타입 [분석 단계] 기능 표현을 위한 멤버메서드들 [설계 단계] 기능은 있을 수도 있고 없을 수도 있음 속성 가장 중요

10 클래스(Class) 구조 클래스 구성 요소 [접근제한자] [기타 제한자] class 클래스이름 [extends 부모클래스] [implements 인터페이스] { [멤버변수(인스턴스변수 or 클래스변수)] [상수] [static 초기화 블록] [생성자] [멤버메소드(인스턴스메소드 or 클래스메소드)] [내부클래스] } 1 2 3 4 5 6 7 8 접근 제한자, 기타 제한자, 부모클래스, 인터페이스 – [] 안에 위치한 것들 생략 가능

11 클래스(Class) 구성 요소 인스턴스 변수 클래스 정의 시 객체의 속성(상태정보) 저장을 위한 변수
메서드의 내부에 선언되는 지역변수와 달리 클래스 내부에 선언 지역변수는 메소드 내부에서만 사용 가능하지만, 인스턴스 변수는 클래스내부의 모든 메소드에서 사용 가능 int age; String userName; [접근제한자] [기타 제한자] 데이터타입 변수이름;

12 클래스(Class) 구성 요소 인스턴스 메서드 클래스 정의 시 객체의 속성과 관련된 행위(기능)을 표현하기 위해 메소드 정의
int sum(int x, int y) { return x + y; } [접근제한자] [기타 제한자] 데이터타입 메서드이름(매개변수리스트) { // 기능 구현(연산자, 제어문 등 사용) }

13 클래스(Class) 샘플 일상생활의 급여명세서(객체)를 표현한 클래스 – 객체 추상화 Payslip class Payslip{
String name; // 이름 int salary; // 급여 int tax; // 세금 int homePay; // 실수령액 }

14 클래스(Class) 샘플 일상생활의 급여명세서(객체)를 표현 한 클래스 – 객체 추상화
인스턴스 변수와 인스턴스 메소드를 이용하여 급여명세서의 속성과 기능 표현 class Payslip{ String name; // 이름 int salary; // 급여 int tax; // 세금 int homePay; // 실수령액 // 세금계산 기능을 위한 사용자 정의 인스턴스 메소드 void setTex(){ tex = (int)(salary* ); } age 35 payslip

15 클래스(Class) 샘플 // 실수령액 계산 기능 void setHomePay(){ homePay = salary - tex;
} // 급여명세서 출력 기능 void print(){ System.out.println("**************************"); System.out.println(" 월 급여 내역 -----"); System.out.println("성명: " + name); System.out.println("본봉: " + salary); System.out.println("세금: " + tex); System.out.println("실수령액: " + homePay);

16 인스턴스(Instance) 생성 및 사용 인스턴스
클래스의 인스턴스 변수나 메소드를 사용하기 위해서는 반드시 메모리에 인스턴스를 생성하여야 한다 JVM에 의해 클래스로부터 메모리에 생성된 실체(소프트웨어 객체) 설계도로부터 만들어진 실제 건축물에 비유할 수 있다. new 키워드를 사용하여 인스턴스 생성 하나의 설계도로부터 다수의 건축물(실체)가 만들어질 수 있듯이, 프로그램에서도 하나의 클래스로부터 다수의 인스턴스를 생성할 수 있다 // #1. 레퍼런스 변수 선언 Account myAccount; // #2. 인스턴스 생성 myAccount = new Car(); // #3. 인스턴스 변수와 메소드 사용 myAccount.accountNum = “ ”; myAccount.deposite(100000);// 메소드 호출

17 객체 모델링(Modeling) 개념 및 필요성
대상물(실체)에 대한 정보를 제공하기 위해 이해하기 쉬운 형태로 표현한 것 대상물의 정리와 가시화 모델예) 지하철 노선도, 프라모델, 모델하우스 등 모델링 모델을 만드는 것 시스템 개발 시 모델(Model)의 필요성 시스템 개발 단계별로 모델을 작성함으로 써 시스템을 시각적으로 이해하기 쉽다. 시스템 이해 당사자(고객, 분석가(Analysis), 설계가(Architect), 개발자(Engineer) 등)들의 의사소통 수단으로 사용한다. 고객의 요구사항에 대한 명확한 이해, 보다 명확한 설계와 유지보수가 용이하다. 시스템의 구조나 기능을 명세화하고, 시스템을 구축하는 안내가 될 기본 틀을 제공 분석과 설계 단계에서 多 사용

18 객체 모델링(Modeling)과 프로그래밍 비교
모델링과 프로그래밍 비교

19 객체 모델링(Modeling) 언어 소개 UML(Unified Modeling Language)
개발하고자 하는 시스템을 시각적으로 모델링 하기 위한 언어 객체지향 분석/설계 산출물인 다양한 모델 작성을 위한 통합(표준) 그래픽 언어 객체지향 시스템 개발 분야에서 가장 각광받는 모델링 언어 도형과 기호를 사용하는 9개의 다이어그램을 지원 Class Diagram, Object Diagram, Use-case Diagram, Sequence Diagram, Component Diagram, Deployment Diagram 등 1990년 초반 다양한 객체지향 개발 방법론과 다양한 모델 표기법 혼재 부치(Grady Booch), 럼버(James Rumbaugh), 야콥슨(Ivar Jacobson) 등 1996년 Rational사(부치, 럼버, 야콥슨 합류)에서 모델 표기법과 개발 프로세스 통합(표준화) UML(Unified Modeling Language), RUP(Rational Unifed Process) 1997년 OMG(Object Management Group)에서 표준 모델링 언어로 채택(UML 1.1) 현재 UML 3.0 은 객체지향 시스템 개발 분야에서 시스템과 관련된 산출물을 가시화하고, 명세화하고, 문서화하는데 사용되는 가장 우수한 모델링 언어로 인식


Download ppt "Object Oriented Programming"

Similar presentations


Ads by Google