2014-2 스마트 디바이스 프로그래밍
4.Object Programming 개요
제1장
객체지향 프로그래밍 일반 객체지향기술 개요
1.1 1.1.1
학습목표
• 객체지향기술(Object Oriented Architecture) 의 기본적인 개념을 최대한 직관적으로 이해하도록 노력 해보자. • OOP (Object Oriented Programming) 이해의 지름길은 프로그램의 역사를 이해 하는 것 에서 시작 한다. • 용어의 홍수 속에서 균형을 잡는 것이 매우 중요하다.
1.1.2
프로그래밍 기술의 변천 과정
• 프로세스지향 (절차지향 프로그램) ,데이터 지향, 객체지향
Figure 1.1: 프로그래밍 기술의 변천 과정
1.1.3
객체지향 개념의 출발
• 객체지향개념의 등장 배경은 소프트웨어를 개발하기 위한 것이 아님. • 현실세계를 추상적 모델링을 통해서 표현하기 위한 동기로 출발
2
프로세스지향 (Process Oriented)
1.2 1.2.1
프로세스지향 (Process Oriented) 프로세스지향 (절차지향 프로그램)
Figure 1.2: 프로세스지향 (절차지향 프로그램)
• POA (Process Oriented Approach) • 일을 처리하는 순서, 과정을 프로그래밍으로 구현한 것 • 일을 처리하는 순서, 과정이 중요하다 • 순서 과정이 달라지면 기존 작업모델을 폐기하고 새로운 작업모델이 필요해짐 • 재사용이 어려움
DFD (Data Flow Diagram) (A1 + A2) * B2 = C
Figure 1.3: DFD (Data Flow Diagram)
1.2.2
구조적 프로그래밍
• 신뢰성 있는 소프트웨어 생산과 코딩의 표준화 등을 위해 개발된 방법
Dijkstra 방법론 • 구조화 프로그래밍 방법론 중 선택과 반복 구조를 사용하는 것
3
제 1 장 객체지향 프로그래밍 일반 구조적 프로그래밍의 기본 제어 구조 • 순차(Sequence) 명령을 순서적으로 나열 • 선택(Selection) 특정 논리에 기초하여 명령을 선택함 • 반복(Iteration) 순환을 제공함
프로그래밍 규칙 • 프로그램의 제어 흐름을 선형화 함 • 단일 입구와 단일 출구만 가지게 함 • GOTO문을 사용하지 않음 • 순차, 선택, 반복의 3가지 기본 제어 구조를 사용함
4
Functional Programming in C
1.3
Functional Programming in C
1.3.1
Function Call 관계로 이루어짐 (전역변수, 지역변수 의 문제점)
• Function 각각이 의존적인 특징을 보임 함수의 부분수정에 따른 관련된 함수들의 오류를 보장하지 못함 • Data 는 Function 을 수행하기 위한 부수적인 존재임 여러 Function 에서 참조하기 위해서는 전역변수를 사용해야 하고 이러한 변수들이 많아지는 경우 실 수로 논리적인 오류를 만들어 낼 수 있음 • 데이터의 Locality (지역성) 이 없음
Static 변수 • 함수 內 : 함수 안에서만 지속적으로 사용가능 • 파일 內 : 그 파일내의 함수들만 접근 가능
1.3.2
C 의 한계
• 유저의 요구사항이 지속적으로 변함 • 코드의 분량이 커짐 • 객체지향개념에서 문제점을 해결해 보려는 시도가 도입됨 • Object-Oriented Methodology 등장 (Locality, Information-Hiding 보장)
5
제 1 장 객체지향 프로그래밍 일반
1.4 1.4.1
데이터지향 (Data Oriented) DOA (Data Oriented Approach)
ER (Entity Relation) 다이어그램 데이터의 속성과 데이터 사이의 관계가 명확해짐
Figure 1.4: ER (Entity Relation)
6
객체 지향, OOP (Object Oriented Programming)
객체 지향, OOP (Object Oriented Programming)
1.5 1.5.1
기존 개발 방법의 단점
• 프로세스와 데이터를 각각 별개의 것으로 파악하기 때문에 어느 한쪽이 변경 되었을 경우 다른 한 쪽에 커다란 영향을 줄 수 있다. • 수정할 부분의 영향이 미치는 범위를 모두 점검한 뒤 수정 해야 한다. • 유지보수 비용이 많이 발생한다.
Figure 1.5: 기존 개발 방법의 단점
7
제 1 장 객체지향 프로그래밍 일반
1.5.2
객체 지향 기술의 전체적인 모습과 발전과정
Figure 1.6: 객체 지향 기술의 전체적인 모습과 발전과정
8
객체 지향, OOP (Object Oriented Programming)
1.5.3
객체지향 개발 과정
OOA (Object-Oriented Analysis) 도메인 전문가, 사용자, 관리자, 개발자 들간에 만들고자 하는 프로그램에 대한 공통적인 생각을 끄 집어 내는 과정 OOD (Object-Oriented Design) 프로그램에 대한 공통적인 생각을 어떻게 구현할 것인지를 계획 OOP (Object-Oriented Programming) 실제 프로그래밍 작업
1.5.4
소프트웨어의 위기(Crisis)
개요 • 컴퓨터의 발달 과정에서 소프트웨어의 개발속도가 하드웨어의 개발속도를 따라가지 못해 사용자들의 요구사항을 감당할 수 없는 문제가 발생함을 의미
원인 • 소프트웨어의 특징에 대한 이해 부족 • 소프트웨어의 관리 부재 • 프로그래밍에만 치중
현상 • 개발 인력의 부족과 그로 인한 인건비 상승 • 개발 기간의 지연 • 하드웨어 비용을 초과하는 개발 비용 증가 • 성능 및 신뢰성의 부족 • 유지 보수 (Maintenance) 의 어려움에 따른 엄청난 비용
9
제 1 장 객체지향 프로그래밍 일반
OOP 개요
1.6 1.6.1
정의
• 프로세스 지향과 데이터 지향의 단점을 해결하기 위해 고안됨 • 세상에 존재하는 모든 자원을 프로세스와 데이터 양쪽 모두를 보유하는 객체로 취급 • 프로세스 중심이 아닌 객체중심으로 프로그래밍을 구현
1.6.2
재사용 관점에서 바라본 OOP
• 하드웨어는 재사용이 가능하지만 소프트웨어는 재사용이 안되기 때문에 하드웨어의 생산성을 따라가지 못한다. 그리고 유지보수에 엄청난 돈이 들어가므로 모듈화로 어느정도 해결했으나 이것도 부족해서(완 전히 독립되지 못함) 객체지향 개념이 도입됨 (완전한 부품으로 만들자는 이야기)
1.6.3
특징
• 순서, 과정이 중요하지 않다. • 인간의 사고방식을 흉내 낸 방식 • 이해가 쉽고 모듈화가 쉽다. • 재사용이 가능하다.
1.6.4
Object
• 실 세계에 존재하는 모든 것을 포함할 수 있어야 함 • 눈에 보이지 않는 추상적인 것도 포함됨 • 유일성을 보장할 수 있어야 함 • 독립적으로 존재하고 스스로 행위와 상태를 변경할 수 있어야 함
1.6.5
결론
• 현실세계에서 바라본 관점으로 Class 라는 도구를 이용해 객체를 만들고 이들 객체를 중심으로의 상호 작용관계를 프로그래밍 하는 것
Figure 1.7: OOP 개요
10
객체지향의 중요한 개념 6가지
1.7 1.7.1
객체지향의 중요한 개념 6가지 객체 생성 과정
• 추상화 (Abstraction) • 클래스 (Class) • 인스턴스 (Instance)
1.7.2
효율성 증대
• 캡슐화 (Encapsulation) • 상속 (Inheritance) • 다형성 (Polymorphism)
Figure 1.8: 효율성 증대
11
제 1 장 객체지향 프로그래밍 일반
1.8 1.8.1
Abstraction 연습 및 중요성 이해 객체의 특징 추출
Figure 1.9: 객체의 특징 추출
• Subject 가 바라본 모든 object 에는 속성과 동작을 갖는다.
Figure 1.10: 객체의 특징 추출 개요
1.8.2
객체 모델링 (Data Abstraction)
• 프로그램 개발 시 실제로 필요한 속성과 동작을 추출하는 과정
12
Abstraction 연습 및 중요성 이해
Figure 1.11: 객체 모델링
1.8.3
코끼리에 대한 Abstraction 예
Figure 1.12: 코끼리에 대한 Abstraction 예
13
제 1 장 객체지향 프로그래밍 일반
1.9 1.9.1
객체지향 프로그래밍 순서 객체지향 프로그래밍 순서
Figure 1.13: 객체지향 프로그래밍 순서
1.9.2
데이터 추상화 이후의 클래스화 (Classification)
추상화된 데이터를 가지고 사용자 정의 자료형을 정의하는 것
Figure 1.14: 클래스화
1.9.3
클래스화 이후의 인스턴스화 (Instantiation)
클래스 기반의 객체(Object) 생성 = 인스턴스화
Figure 1.15: 인스턴스화
14
효율성 증대 방안 3가지
1.10 1.10.1
효율성 증대 방안 3가지 캡슐화 (Encapsulation)
• 객체 사이에 상호작용만 제대로 확립되어 있으면 내부구조는 공개할 필요가 없다. • 데이터와 데이터의 행동 양식을 결정하는 코드를 묶는 구조다. • 원하는 부분을 외부로부터 숨길 수 있다. • 동작과 정보를 포함하는 블랙박스(Black Box)를 만들 수 있다. • Data Abstraction 을 잘하는것이 캡슐화를 성공적으로 하는것 이라고 볼 수 있음.
Figure 1.16: 캡슐화
1.10.2
다형성 (Polymorphism)
• Multi + morph • 여러가지 모양으로 나타나는것을 의미 • 외부로부터 전달된 메시지에 대해, 관련 객체들이 서로 다르게 반응하는 것 (Message Polymorphism)
Figure 1.17: 다형성
1.10.3
상속 (Inheritance)
• 객체 사이에 공통된 부분을 모두 정의 하는 것은 비효율적이다.
Class Hierarchy (클래스 계층구조) • 유사한 구조와 행위를 가진 클래스들 간의 개념적 포함 관계를 계층적으로 나타낸 것 • 상위 클래스는 하위 클래스들에 대한 공통적인 구조와 행위를 소유함 • 하위 클래스는 자신만의 특별한 특징만을 가짐
15
제 1 장 객체지향 프로그래밍 일반
Figure 1.18: 상속
단일상속 • 계층 구조가 깊어질 수록 개념이 중복되는 경우가 발생함
다중상속 • 계층 구조가 깊어져도 개념의 중복은 적으나 상속된 개념 간의 충돌이 발생할 수 있음 • 간단한 모델에서는 유리하지만 클래스 계층구조 자체를 복잡하게 만들어서 관리할 수 없을 정도의 상 황을 만들 수 있다 • C++ 지원, Java와 C# 은 단일 상속만 지원하나 Interface 라는 개념을 사용함
UML [unified modeling language] • 객체 지향 분석/설계용의 모델링 언어. 기존의 객체 지향 방법론과 함께 제안되어 모델링 언어 표기법의 표준화를 목적으로 한 것이다
Figure 1.19: MFC
16
객체지향 소프트웨어 공학 개념 정리
객체지향 소프트웨어 공학 개념 정리
1.11 1.11.1
객체지향 기법 개념
• 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립 하여 제품을 만들듯이 소프트웨어를 개발할 때도 객체들을 조립해서 작성할 수 있도록 하는 기법을 말함 • 객체들 간의 상호작용은 메시지를 통해 이루어짐 • 클래스는 인스턴스(instance)들이 갖는 변수들과 인스턴스들이 사용할 메소드(method)를 가짐
1.11.2
객체지향 기법의 구성 요소
객체 (Object) • 객체란 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈(어트리뷰트+메소드) • 어트리뷰트(Attribute) 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄 데이터, 속성, 상태, 변수, 상수, 자료 구조라고도 함 오브젝트의 상태는 어트리뷰트를 파악함으로써 알 수 있음
메소드(Method) • 객체지향 시스템에서 전통적 시스템의 함수(Function) 또는 프로시저 (Procedure)에 해당하는 연산 기 능 • 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것 • 객체가 갖는 데이터를 처리하는 알고리즘 • 연산(Operation)이라고도 함 • 오퍼레이션(Operation)은 속성(Attribute)을 변화시킴 • 메시지를 처리하기 위해 객체에서 내부적으로 정의한 행위
클래스 (Class) • 클래스는 공통된 속성과 연산(행위)을 갖는 객체의 집합으로 객체의 일반적인 타입(Type)을 의미 • 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미 • 모든 객체들은 더 큰 클래스의 멤버이고, 그 클래스에 대하여 이미 정의된 개별 자료구조와 연산이 상 속이 되며, 그 때문에 개별 객체는 클래스의 인스턴스가 됨 • 메타 클래스 (Meta Class) 클래스의 클래스를 의미하는 것으로 클래스 계층 트리의 최상단에 위치
메시지 (Message) • 현실세계의 동적인 상황을 다루기 위함 • 메시지는 객체(Object)들 간에 상호작용을 하는데 사용되는 수단 • 객체(Object)의 메소드(동작, 연산)를 일으키는 외부의 요구 사항임 • 메시지의 구성 요소 메시지를 받는 객체(수신자)의 이름 객체(Object)가 수행할 메소드 이름
17
제 1 장 객체지향 프로그래밍 일반 메소드를 수행할 때 필요한 인자(속성값) 메시지 전달은 오브젝트(object)에서 오브젝트로 이루어짐 메소드는 오브젝트로부터 메시지를 받을 때 시작되어 짐 (=오브젝트가 메시지를 받으면 메소드를 부른 다(Invoke))
1.11.3
객체지향 기법의 기본 원칙
캡슐화 (Encapsulation) • 캡슐화는 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것 • 객체지향 시스템에서 자료부분과 연산(또는 함수)부분 등 정보처리에 필요한 기능을 한 테두리로 묶는 것 • 객체 지향의 기본 원리인 정보은폐와 가장 밀접한 관계가 있음 • 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 과정 • 서로 관련 있는 데이터와 연산자를 하나로 묶어서 프로그램의 컴포넌트로 재사용할 수 있는 개념 • 객체 내부의 변경은 다른 객체에 영향을 끼치지 않음
객체지향의 캡슐화(encapsulation) 개념이 갖는 장점 • 재사용이 용이 • 인터페이스 단순화 • 변경이 발생할 때 오류의 파급효과가 적음 • (x) 연산방법이 단순함 • (x) 소프트웨어 분석단계가 간단해짐 • (x) 객체간 결합도 (Coupling) 이 높아짐
Modulation 실현 • C 프로그램의 기본단위는 function 이고 궁극적으로 function 을 이용한 모듈화를 구현한지만 C++ 프로그램의 기본단위는 Class 이고 Object 생성을 통한 모듈화를 구현한다. • 궁극적으로 Component 실현
정보 은닉 (Information Hiding) • 캡슐화에서 가장 중요한 개념 • 다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것 • 정보 은폐라고도 함 • 고려되지 않은 영향(Side Effect)들을 최소화하기 위하여
추상화 (Abstraction) • 추상화는 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화하는 것
18
객체지향 소프트웨어 공학 개념 정리 상속성 (Inheritance) • 상속성은 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것을 말함 • 상위 클래스의 속성과 연산을 하위 클래스가 공유할 수 있기 때문에 객체 (Object)와 클래스의 재사용, 즉 소프트웨어 재사용(Reuse)을 증대시키는 중요한 개념임
다형성 (Polymorphism) • 객체지향 시스템에서 서로 다른 Class들이 같은 의미의 응답을 하는 특성 • 한 메시지가 객체에 따라 다른 방법으로 응답할 수 있는 것 • 많은 상이한 클래스들이 동일한 메소드 명을 이용하는 능력
1.11.4
객체지향 프로그램의 장점
• 자연적인 모델링이 가능 • 소프트웨어의 재사용률이 높아짐 • 소프트웨어의 유지보수성이 향상 • (x) 실행속도가 빨라짐
1.11.5
요약
Figure 1.20: 요약
19
제 1 장 객체지향 프로그래밍 일반
1.12
연습문제
Question
1
객체지향 개념중 서로 다른 객체에 동일한 메시지가 전달될 수 있지만 객체 각각의 서로다른 매커 니즘으로 메시지를 처리 할 수 있는 개념은?
2
객체지향개념에서 객체가 갖는 데이터를 처리하는 알고리즘을 담고 있는것은?
3
메소드는 객체지향 시스템에서 전통적 시스템의 함수(
) 또는 프로시저 (
)
에 해당하는 연산 기능을 이야기 한다.
4
객체지향 개념에서 메시지를 처리하기 위해 객체에서 내부적으로 정의한 행위를 무엇이라고 하는가?
5
객체 지향 프로그램에서 추상화 단계를 거친것을 실제 코드로 옮기는 작업을 무엇이라고 하는가?
6
컴퓨터 프로그래밍 발전사에서 Distributed Program 의 내용으로 옳은것은? (1)애플리케이션 로직이 복잡하고 커지면서 클라이언트에 모두 자리잡을 필요성 없어짐 (2)데이터를 주고 받는데 대한 표준 API 를 제공하는 개념 등장 (3)N-Tier Architecture 로 발전해감 (4).NET, EJB 주류
7
데이터의 흐름을 그림으로 표현해서 프로세스의 모델 작업을 하는 DFD 의 약자는?
8
객체지향 OOP 의 약자를 작성하시오
9
컴퓨터의 발달 과정에서 소프트웨어의 개발속도가 하드웨어의 개발속도를 따라가지 못해 사용자들 의 요구사항을 감당할 수 없는 문제가 발생함을 의미하는 용어는?
10
객체지향 개념중 객체 내부의 변경은 다른 객체에 영향을 끼치지 않는다는다는 것은?
11
데이터 지향 프로그램에서 아래와 같은 다이어그램을 무엇이라고 하는가? (약자를 풀어쓰시오)
12
객체지향 소프트웨어 공학의 상속성에 대한 설명으로 바른것은? (1) 상위 클래스의 메소드와 속성을 하위 클래스가 물려받는것을 의미한다. (2) 데이터와 데이터를 조작하는 연산을 하나로 묶는것을 말한다.
20
연습문제
(3) 객체 클래스로부터 만들어진 하나의 인스턴스이다. (4) 변수가 취할 수 있는 여러가지 특성 중의 하나를 결정받는 것을 말한다
13
객체지향 기법중 하나로 한 메시지가 객체에 따라 다른 방법으로 응답할 수 있는 것 혹은 많은 상 이한 클래스들이 동일한 메소드 명을 이용하는 능력을 무엇이라고 하는가?
14
객체지향개념에서 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈(어트 리뷰트+메소드) 을 무엇이라고 하는가?
15 16
클래스의 멤버 접근제어 종류중 클래스에서 묵시적으로 사용하고 있는 접근 제어 종류는?
객체지향 프로그램의 순서중 세번째로 수행하는것은? (1) 객체 추출 (2) 객체 모델링 (3) 클래스 작성 (4) 클래스 생성과 사용
17
Subject 가 바라본 모든 object 에는 속성과 동작의 특징들을 추출하는 작업을 무엇이라고 하는가?
18
컴퓨터 프로그래밍 발전사에서 공유해야 되는 데이터들을 네트웍으로 처리하기 시작 하면서 등장하 게 되는 프로그램 방식은? (1) Stand-alone program (2) Client/Server Program (3) Distributed Program (4) Distributed Component Program
19 20
컴퓨터 프로그래밍 발전사에서 Function 개념이 없는 프로그램은?
다음중 객체지향 용어중 성격이 다른것은? (1) Object (2) Class Hierarchy
21
제 1 장 객체지향 프로그래밍 일반 (3) Encapsulation (4) Message
21
다음중 객체지향 용어중 성격이 다른것은? (1)Encapsulation (2) Inheritance (3) Instance (4)Polymorphism
22
유사한 구조와 행위를 가진 클래스들 간의 개념적 포함 관계를 계층적으로 나타낸 것을 무엇이라고 하는가?
23
객체지향 기법에서 상속(INHERITANCE)의 결과로서 얻을 수 있는 가장 주요한 이점은? (1) 모듈 라이브러리(Library)의 재이용 (2) 객체지향 DB를 사용할 있는 능력 (3) 클래스와 오브젝트들을 재사용할 수 있는 능력 (4) 프로젝트들을 보다 효과적으로 관리할 수 있는 능력
24
객체는 다른 객체로부터 자신의 자료를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것은 무엇 이라 하는가?
25
객체지향 기술에서 통합모델링 언어로 사용하는것은? (1) UML (2) XML (3) OOP (4) Component
26
상속의 개념중 C++ 에서는 지원하지만 Java와 C# 은 단일 상속만 지원하나 Interface 라는 개념 을 사용하고 있는 것은?
27
객체지향 개념 중 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 통해 틀을 만들어 내는 작업을 의미하는 것은? (1) Method (2) Class (3) Inheritance (4) Abstraction
28
객체지향 시스템에서 전통적인 시스템의 함수 또는 프로시저에 해당하는 연산 기능을 무엇이라고 하는가? (1) Method (2) Message
22
연습문제 (3) Module (4) Package
29
객체 지향 프로그램에서 만들어진 클래스를 이용해 실제 객체를 만드는 작업을 무엇이라고 하는가?
30
객체지향 프로그램의 장점으로 거리가 먼 것은? (1) 자연적인 모델링이 가능하다 (2) 실행속도가 빨라진다 (3) 소프트웨어의 재 사용률이 높아진다. (4) 소프트웨어의 유지보수성이 향상된다
31
객체지향개념에서 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타내는 것은?
32
컴퓨터 프로그래밍 발전사에서 Procedure 의 기능을 Function 으로 통합하면서 등장한 언어는?
33
객체지향 설계에 있어서 정보은폐(information hiding)의 근본적인 목적은? (1) 코드를 개선하기 위하여 (2) 프로그램의 길이를 짧게 하기 위하여 (3) 고려되지 않은 영향(side effect)들을 최소화 하기 위하여 (4) 인터페이스를 최소화하기 위하여
34
객체지향 기법에서 메시지(message)의 전달은 어떻게 이루어지는가?
35
클래스의 클래스를 의미하는 것으로 클래스 계층 트리의 최상단에 위치한 클래스는?
36
Java와 C# 과 같은 언어는 다중상속을 지원하지 못하지만
을 이용해서 다중상속의
기능을 수행 할 수 있다.
37
객체지향 프로그램을 효율적으로 하기 위한 3가지 대표 기술은?
38
객체를 생성하는 과정으로 중요한 3가지 기술은?
39
서로 관련 있는 데이터와 연산자를 하나로 묶어서 프로그램의 컴포넌트로 재사용할 수 있는 개념을 무엇이라고 하는가? (1) Abstriction (2) Encapsulation (3) Information Hiding (4) Instance
23
제 1 장 객체지향 프로그래밍 일반
40
클래스의 멤버 접근제어 종류중 구조체에서 묵시적으로 사용하고 있는 접근 제어 종류는?
41
객체지향개념에서 객체의 내/외부에서 객체로 전달되는 이벤트를 무엇이라고 하는가?
42
오브젝트가 메시지를 받으면 어떤 행위가 발생되는가?
43
객체의 특징을 추출 할때 속성과 동작으로 추출해낸다. 이 두가지를 영어로 옮기시오
44
클래스의 멤버 접근제어 종류중 보호의 순위가 가장 낮은 키워드는?
45
객체지향 개념에서 현실세계의 동적인 상황을 다루기 위해 사용되는 개념은?
46
객체(Object)들 간에 상호작용을 하는데 사용되는 수단으로 이용되는것은?
47
컴퓨터 프로그래밍 발전사에서 C 언어 이전에 등장한 언어로 Function 과 Procedure 두가지 개념 을 모두 가지는 언어는?
48
Functional Programming 의 문제점을 설명한 것으로 틀린것은? (1) 함수의 부분수정에 따른 관련된 함수들의 오류를 보장하지 못함 (2) 데이터의 Locality (지역성) 이 없음 (3) 코드의 분량이 커짐 (4) 유저의 요구사항에 대처하기 쉬움
49
데이터의 흐름을 그림으로 표현해서 프로세스의 모델 작업을 하는 DFD 의 약자는?
50
신뢰성 있는 소프트웨어 생산과 코딩의 표준화 등을 위해 개발된 방법의 하나로 Dijkstra 가 선택한 방법에서 사용하는 기본 제어 구조 3가지는?
51
객체지향개념에서 메시지를 처리하기 위해 객체에서 내부적으로 정의한 행위를 무엇이라고 하는가?
52
클래스의 멤버 접근제어 종류중 보호의 순위가 가장 높은 키워드는?
53
데이터의 흐름을 그림으로 표현해서 프로세스의 모델 작업을 하는 DFD 의 약자는?
54
Functional Programming 의 문제점을 설명한 것으로 틀린것은? (1)코드의 분량이 작아짐
24
연습문제 (2)데이터의 Locality (지역성) 이 없음 (3)Data 는 Function 을 수행하기 위한 부수적인 존재임 (4)함수의 부분수정에 따른 관련된 함수들의 오류를 보장하지 못함
55
객체지향개념에서 실세계의 동적인 부분을 다루기 위한 것은? (1) Message (2) Event (3) Method (4) Object
56
캡슐화(Encapsulation)의 장점이라고 볼 수 없는 것은? (1) 소프트웨어 변경 시 파급효과를 최소화한다. (2) 소프트웨어의 분석단계가 간단해진다. (3) 소프트웨어 컴포넌트(Component)의 재사용을 쉽게 한다. (4) 캡슐화된 객체 간에 인터페이스가 단순화 된다.
57
기존의 소프트웨어공학 기법들과 차별화 될 수 있는 객체지향 개념이 아닌 것은 어느 것인가? (1)캡슐화(encapsulation) (2)상속성(inheritance) (3)다형성(polymorphism) (4)모듈화(modularity)
58
소프트웨어의 위기(Crisis) 의 현상으로 개발 이후
의 어려움에 따른 엄청난 비용이 발
생된다.
59
다음 설명으로 틀린것은? (1) 메소드는 메시지를 처리하기 위해 객체에서 외부적으로 정의한 행위임 (2) 클래스의 클래스를 의미하는 것으로 클래스 계층 트리의 최상단에 위치하는 클래스를 Meta Class 라고 함 (3) 메시지는 현실세계의 동적인 상황을 다루기 위함 (4) 메시지는 객체(Object)들 간에 상호작용을 하는데 사용되는 수단
60
객체 지향 분석,설계용의 모델링 언어로 기존의 객체 지향 방법론과 함께 제안되어 모델링 언어 표 기법의 표준화를 목적으로 개발된 언어는? (약자를 풀어쓰시오)
61
객체지향 기법이란 현실 세계의 개체(
)를 기계의 부품처럼 하나의 객체(
)
로 만들어, 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때도 객체들을 조립 해서 작성할 수 있도록 하는 기법을 말함
62
객체지향 기법에서 메소드는 어느 시점에 시작되어 지는가?
25
제 1 장 객체지향 프로그래밍 일반
63
메소드는 오브젝트로부터 메시지를 받을 때 시작되어 짐 (=오브젝트가 메시지를 받으면 메소드를 부른다(
64
)
컴퓨터 프로그래밍 발전사에서 Distributed Component Program 의 내용으로 옳은것은? (1) 데이터를 주고 받는데 대한 표준 API 를 제공하는 개념 등장 (2) COM, COM+ 주류 (3) Thick, Thin 클라이언트 모델 등장 (4) 공유해야 되는 데이터들을 네트웍으로 처리하기 시작
26
65
캡슐화의 가장 중요한 개념으로 자신의 정보를 숨기는 즉 정보 은폐라고도 하는 개념은?
66
객체지향 개념에서 오퍼레이션은 무엇을 변화시키는가?