본문 바로가기

B1:기초 Basement

대규모 프로그래밍

반응형

분할정복
- 복잡한 것을 여러 부분으로 분할
- 분할된 여러 부분을 좀 더 작은 문제로 나누어 해결
- 각 부분의 중요 특징만을 추출=>추상화

추상화
- 프로그램의 추상화 : 모듈화
- 모듈 : 상호작용의 최소화 및 독립적 기능

캡슐화
- 부프로그램과 데이터의 통합
- 정보은폐:모듈의 구체적인 표현 및 구현 내용 접근의 블랙박스화
- 구조
  접속부 : 제공되는 서비스의 정의 및 서비스에 대한 접근방법 정의
  구현부 : 서비스를 구현한 부분(사용자에게 은폐)

독립컴파일
- 어떤 모듈을 다른 모듈에 관계없이 컴파일하는 것
- 예 : C

분리컴파일
- 순서를 따라서 컴파일함
- Ada, Modula-2, FORTRAN 90

추상자료형
- 하나의 자료형에 대한 표현명세와 그 자료형에 대한 연산인 부프로그램의 캡슐화
- 접근제어구조 : 세부적인 내무구조에 접근할 수 없도록 제어관리
- 인스턴스 : 어떤 추상 자료형의 내용에 맞게 생성된 실제 개체
- 캡슐화 구조에는 접근 제어구조가 반드시 포함되지는 않음

예> Queue의 추상자료형
연산 : create/empty/enqueue/dequeue
자료구조 : front/rear/배열이나 연결리스트

C언어에서 큐의 추상자료형
- 캡슐화 구현 가능
예> 접속부와 구현부를 가지는 부프로그램
- 정보은폐 구현 불가
예> 자료구조의 변경으로 인한 수혜자의 매개변수 변경

C++의 추상자료형
- C언어를 객체지향언어로 확장하여 추상자료형을 지원
- 클래스 : C언어의 구조체의 확장
- 데이터멤버 : 클래스에 정의된 데이터
- 멤버함수 : 표제부만 클래스 정의 안에 나타나거나 함께 연산을 정의함

C++의 접근제어
- public : 클래스에서 공개되는 부분
- private : 은폐되는 부분
- protected : 접근지정자에 따라서 달라짐
구축자 : 클래스의 객체가 새로 생성될 때 초기화 수행
파괴자 : 객체의 생명시간이 끝날 때 수행
friend 함수 : 클래스의 멤버함수는 아니지만 마치 멤버함수인 것처럼 은폐부를 접근함

Ada의 추상자료형
- 패키지 명세
  패키지 명제만으로 컴파일 가능
  명세 정의 후, 개발자가 각각 독립적으로 구현
  컴파일러의 라이브러리에 저장되며, 패키지의 형 조사에 이용됨
- 제한 은폐형
  limited private으로 선언
  이름은 공개적, 자료구조는 은폐됨
  내장연산이 없기 때문에 적용가능한 모든 연산은 그 패키지에서 명시적으로 제공

java의 추상자료형
- 사용자정의 자료형은 모두 클래스이고 모든 객체는 히프에서 할당
- 모든 메소드는 클래스 안에서 구현되어야 함
- 모든 메소드 또는 변수의 정의에 provate, public이 각각 표시됨
- 인터페이스
  상수와 메소드의 선언으로 구성됨
  Ada의 패키지 명세와 유사함
  다중계승을 위한 수단
- 패키지구조
  하나 이상의 클래스를 묶을 수 있는 구조
  동일 패키지 안의 private이 아닌 메소드와 변수는 패키지 안의 모든 클래스에서 접근 가능
  패키지로 작성된 표준 클래스라이브러리는 패키지의 계층구조로 정의됨

다형성
- 연산/부프로그램의 다형성
  어떤 한 형에 대해서만 정의된 것이 아니라 여러 자료형을 처리할 수 있도록 만들어진 것
  특수범주형 다형성
     피연산자의 형에 따라 정의된 형에 대해서만 연산 적용=>Overloading연산
  매개변수화 다형성
     모든 자료형에 대해 적용될 수 있는 부프로그램이나 추상자료형을 정의
     일반화 부프로그램 : 매개변수와 다형적인 추상자료형
     매개변수화 다형적 부프로그램
     매개변수화 다형적인 추상자료형
- 모든 형을 받아들일 수 있는 다형성을 가진 모듈의 재사용성은 높음
- 수정비용이 없음
- 개발비용의 절약

Ada의 다형성
- 큐의 일반화 추상자료형
  큐의 원소의 형 제한을 없앰
  큐의 크리 제한을 없앰
- 인스턴스화
  일반화 패키지에 대한 매개변수를 명시하여 실제 패키지를 존재하도록 하는 것
 

반응형

'B1:기초 Basement' 카테고리의 다른 글

Wrapping a primitive  (0) 2006.10.03
객체지향언어(Object Oriented Language)  (0) 2006.10.03
XMLSpy Enterprise Edition  (0) 2006.10.02
범위 (Scope)  (0) 2006.09.17
Java 개발환경 설정 - UltraEdit 버전  (0) 2006.09.10