전공/자료구조

[자료구조] 자료구조 개념, 이론

Campus Coder 2023. 4. 20. 16:08
728x90
반응형

시스템 생명 주기(System Life Cycle)

요구사항

  • 시스템의 요구 사항을 파악, 분석
  • 시스템이 무엇을 해야 하는지, 어떤 기능이 있어야 하는지, 사용자의 기대는 무엇인지 결정

 

분석

  • 시스템의 동작, 기능 및 특성을 정의
  • 시스템의 다양한 구성 요소, 시스템의 관계 및 상호작용 방식을 식별

 

설계

  • 다양한 구성 요소, 구성 요소 간의 관계 및 인터페이스를 포함하여 시스템의 아키텍처 설계
  • 시스템 구현에 대한 세부 계획 개발

 

정제와 코딩

  • 설계 정교화, 소프트웨어 코드화
  • 디자인을 컴퓨터에서 실행할 수 있는 코드로 변환
  • 코드 작성, 테스트 및 디버깅 포함

 

검증

  • 시스템을 테스트하여 요구사항을 충족하고 오류가 없는지 확인
  • 사용자의 기대를 충족하고 의도한 대로 작동하는지 확인

 

객체 지향 설계

구조적 프로그래밍 설계와의 비교

- 유사점: 분할-정복 기법(복잡한 문제를 여러 개의 단순한 부분 작업으로 나누어 각각 개별적으로 해결)

- 차이점: 과제 분할 방법

 

객체 지향적 분해

- 응용 분야의 개체를 모델링하는 객체의 집합

- 소프트웨어의 재사용성 향상

 

객체 지향 프로그래밍의 기본 정의와 개념

객체(object)

- 계산을 수행, 상태를 갖음

- 데이터 + 절차적 요소

 

객체 지향 프로그래밍

- 객체는 기본적인 구성단위

- 각 객체는 어떤 타입의 인스턴스

- 클래스는 상속 관계로 연관됨

 

데이터 캡슐화와 추상화

데이터 캡슐화

- 정보 은닉

- 외부로부터 데이터 객체의 자세한 구현을 은닉

 

데이터 추상화

- 객체의 명세와 구현을 분리

- 무엇과 어떻게를 명확하게 구분

 

장점

  • 소프트웨어 개발의 간소화 - 복잡한 작업을 부분 작업들로 분해
  • 테스트와 디버깅 - 각 부분 작업을 독자적으로 테스팅, 디버깅
  • 재사용성 - 자료 구조에 대한 코드와 연산을 추출해서 다른 소프트웨어 시스템에서도 사용
  • 데이터 타입의 표현에 대한 수정
    • 데이터 타입이 계속 똑같은 연산을 제공하고, 이들 연산이 계속 같은 기능을 하는 한 프로그램의 나머지 부분에 아무런 영향을 주지 않음
    • 데이터 타입의 내부 구현에 직접 접근하는 연산들만 수정

 

데이터 타입

객체들과 객체들에 대한 연산의 집합

C++ 데이터 타입

기본 데이터 타입

- char, int, float, double 등

- 타입 수식어: short, long, signed, unsigned

파생 데이터 타입

- 포인터 타입, 참조 타입

데이터를 묶는 구조

- 배열, 구조체, 클래스

 

추상 데이터 타입

  • 객체와 연산에 대한 명세가 객체의 표현과 연산의 구현으로부터 분리된 방식으로 구성된 데이터 타입

 

알고리즘 명세

알고리즘: 특정 작업을 수행하는 명령어들의 유한 집합

알고리즘의 요건

  • 입력: 외부에서 제공되는 데이터가 0개 이상
  • 출력: 적어도 한 개 이상의 결과 생성
  • 명확성: 각 명령은 명확하고 모호하지 않아야 함
  • 유한성: 각 알고리즘대로 수행하면 어떤 경우에도 반드시 종료
  • 유효성: 반드시 실행(구현) 가능해야 함

 

알고리즘 기술 방법

- 자연어

- 흐름도(flowchart)

- C++

728x90
반응형