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

2023. 4. 20. 16:08·전공/자료구조
728x90
반응형

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

요구사항

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

 

분석

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

 

설계

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

 

정제와 코딩

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

 

검증

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

 

객체 지향 설계

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

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

- 차이점: 과제 분할 방법

 

객체 지향적 분해

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

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

 

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

객체(object)

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

- 데이터 + 절차적 요소

 

객체 지향 프로그래밍

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

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

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

 

데이터 캡슐화와 추상화

데이터 캡슐화

- 정보 은닉

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

 

데이터 추상화

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

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

 

장점

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

 

데이터 타입

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

C++ 데이터 타입

기본 데이터 타입

- char, int, float, double 등

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

파생 데이터 타입

- 포인터 타입, 참조 타입

데이터를 묶는 구조

- 배열, 구조체, 클래스

 

추상 데이터 타입

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

 

알고리즘 명세

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

알고리즘의 요건

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

 

알고리즘 기술 방법

- 자연어

- 흐름도(flowchart)

- C++

728x90
반응형

'전공 > 자료구조' 카테고리의 다른 글

[자료구조] 희소 행렬, 행렬 전치  (2) 2023.05.04
[자료구조] 다항식 표현, 다항식 덧셈  (2) 2023.05.02
[자료구조] 공간복잡도, 시간복잡도, 성능평가  (0) 2023.05.01
[자료구조] 이원 탐색, 순환 이원 탐색  (0) 2023.04.30
[자료구조] 선택정렬  (0) 2023.04.30
'전공/자료구조' 카테고리의 다른 글
  • [자료구조] 다항식 표현, 다항식 덧셈
  • [자료구조] 공간복잡도, 시간복잡도, 성능평가
  • [자료구조] 이원 탐색, 순환 이원 탐색
  • [자료구조] 선택정렬
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    티스토리챌린지
    오블완
    C++
    자바
    추가 문제
    사설 문제
    자료구조
    컴퓨터구조
    반복자
    리눅스
    코틀린
    컴퓨터 구조 및 설계
    컴공 포트폴리오
    데이터패스
    명령어
    메모리 계층 구조
    42서울
    상속
    단일 사이클
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[자료구조] 자료구조 개념, 이론
상단으로

티스토리툴바