** 구조체와 클래스
* 프로그램 작성 방식
– 구조화되지 않은 프로그래밍
– 절차식 프로그래밍
– 모듈식 프로그래밍
– 객체지향 프로그래밍
* 구조체 VS 클래스
** 구조화되지 않은 프로그래밍
– 메인 프로그램 속에 모든 것이 포함된 프로그램
– C나 C++의 경우 프로그램 전체가 main 함수 하나로 작성된 경우
** 절차식 프로그래밍
– 메인 함수 외에 여러 개의 함수로 구성
– 프로그래밍 초기에 C만으로 코드를 작성할 때 효율적
** 모듈식 프로그래밍
– 메인 함수 외에 여러 개의 함수로 구성
– 각각의 모귤은 메인 함수와 관계를 가지며, 각각 별개의 객체로 존재
** 객체지향 프로그래밍
– 메인 함수 없이 여러 개의 객체로 구성
– 각각의 객체는 생성하고 소멸하는 일을 자체적으로 담당
– 같은 종류의 객체가 여러 개 존재 가능
– 메인 함수의 관리하에 데이터를 관리하고 처리하는 것이 아니라 객체들 간에 메시지가 교환
** 비 구조체
– ex) 이름, 나이, 주민등록번호 등을 기록하는 신상카드의 코드화
– 각가의 배열을 만들어 저장
+ 복잡하다.
+ 배열간에 서로 연결된 정보라는 어던 신호도 존재하지 않음.
** 구조체
– 관리를 쉽게 하기 위해 구조체 도입
– 구조체 : 다루고 싶은 데이터를 하나의 덩어리로 묶어주는 것.
** 클래스
– 클래스 : 구조체와 같이 단순히 데이터를 묶어주는 것에 만족하지 않고 객체지향 프로그래밍의 특성을 살린 개념
– Abstraction : 실제 상황으로부터 프로그램내에서 이용하는 모델을 얻어내는 것.
– ADT(Abstract Data Type) : 사람자체가 아닌 사람의 몇가지 특징만을 뽑아 낸 모델
– C++에서 사용하는 클래스라는 개념이 ADT의 개념
– 클래스 : 여러 개의 데이터(abstract data structure)와 그 데이터를 사용하는 함수들(Operation)로 구성
Tags: Software Engineering, 소프트웨어 공학