Object Oriented Programming

Slides:



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

컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
클래스 구성 요소 1개의 클래스는 최대 8개의 구성 요소를 가질 수 있다
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제7장 클래스와 객체.
23장. 구조체와 사용자 정의 자료형 2.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
10장. 예외처리.
자바 5.0 프로그래밍.
[INA470] Java Programming Youn-Hee Han
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
27장. 모듈화 프로그래밍.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
JA A V W. 06.
12. 상속 : 고급.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
플래시 CS3 액션스크립트3.0.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
7 생성자 함수.
6 객체.
소프트웨어 설계 및 실습 강기준.
Presentation transcript:

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

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

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

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

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

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

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

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

객체 모델 (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 은행계좌 계좌번호 예금주 비밀번호 잔고 등 입금하다 출금하다 잔액을 조회하다 등 클래스 이름 속성 변수명 : 데이터타입 속성 저장을 위한 멤버변수들 기능 메소드 이름 (매개변수명): 데이터타입 [분석 단계] 기능 표현을 위한 멤버메서드들 [설계 단계] 기능은 있을 수도 있고 없을 수도 있음 속성 가장 중요

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

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

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

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

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

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

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

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

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

객체 모델링(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 은 객체지향 시스템 개발 분야에서 시스템과 관련된 산출물을 가시화하고, 명세화하고, 문서화하는데 사용되는 가장 우수한 모델링 언어로 인식