Today
Total
Archives
05-20 11:25
관리 메뉴

tony9402

1. 자료구조 기본 개념 본문

알고리즘/공부

1. 자료구조 기본 개념

ssu_gongdoli 2018. 8. 26. 08:46
반응형

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

요구사항

    - 프로젝트들의 목적을 정의한 명세들의 집합

    - 입력과 출력에 관한 정보를 기술


분석

    - 문제들을 다룰 수 있는 작은 단위들로 나눔


설계

    - 추상 데이터 타입(abstract data type) 생성

    - 알고리즘 명세와 설계 기법 고려


정제와 코딩

    - 데이터 객체에 대한 표현 선택

    - 수행되는 연산에 대한 알고리즘 작성


검증

    - 정확성 증명 : 수학적 기법들을 이용해서 증명 

    - 테스트 : 프로그램의 정확한 수행 검증, 프로그램의 성능 검사


오류 제거

    - 독립적 단위로 테스트 후 전체 시스템으로 통합



객체 지향 설계


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


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


   - 차이점 : 과제 분할 방법



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


알고리즘적 분해와 객체 지향적 분해


알고리즘적 분해(함수적 분해)

    - 고전적 프로그래밍 기법

    - 소프트웨어를 기능적 모듈로 분해

    - Pascal의 프로시저, FORTRAN의 서브프로그램, C의 함수


객체 지향적 분해

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

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


객체(object)

    - 계산을 수행하고 상태를 갖는 개체

    - 데이터 + 절차적 요소


객체지향 프로그래밍(object-oriented programming)

    - 객체는 기본적인 구성 단위(building block)

    - 각 객체는 어떤 타입(클래스)의 인스턴스(instance)

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



데이터 추상화와 캡슐화


데이터 캡슐화

    - 정보 은닉(information hiding)

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


데이터 추상화(data abstraction)

    - 객체의 명세(specification)와 구현(implementation)을 분리

    - 무엇(what)과 어떻게(how)를 명확하게 구분



데이터 타입


데이터 타입

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


C++의 데이터 타입

    - 기본 데이터 타입

        * char, int, float, double, etc

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

    - 파생 데이터 타입

        * 포인터 타입, 참조 타입

    - 데이터를 묶어주는 구조

        * 배열, 구조, 클래스


추상 데이터 타입

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



데이터 추상화와 데이터 캡슐화의 장점


소프트웨어 개발의 간소화

    - 복잡한 작업을 부분 작업들로 분해


테스트와 디버깅

    - 각 부분 작업을 독자적으로 테스팅, 디버깅


재사용성

    - 자료 구조에 대한 코드와 연산을 추출해서 다른 소프트웨어 시스템에서도 사용


데이터 타입의 표현에 대한 수정

    - 데이터 타입이 계속 똑같은 연산을 제공하고, 이들 연산이 계속 같은 기능을 하는 한 프로그램의 나머지 부분에 아무런 영향을 주지 않음

    - 테이터 타입의 내부 구현에 직접 접근하는 연산들만 수정



알고리즘 명세


알고리즘

    - 특정 작업을 수행하는 명령어들의 유한 집합


알고리즘의 요건

    - 입력 : 외부에서 제공되는 데이터가 0개 이상

    - 출력 : 적어도 한 개 이상의 결과 생성

    - 명확성 : 각 명령은 명확하고 모호하지 않아야 함

    - 유한성 : 알고리즘대로 수행하면 어떤 경우에도 반드시 종료

    - 유효성 : 반드시 실행(구현) 가능해야 함


알고리즘 기술 방법

    - 자연어

    - 흐름도(flowchart)

    - C++언어



반응형

'알고리즘 > 공부' 카테고리의 다른 글

2. Search algorithm  (0) 2018.09.16
1. 알고리즘이란  (0) 2018.09.16
2. 시간복잡도와 공간복잡도 (1)  (0) 2018.08.26
BFS/DFS 공부 메모  (0) 2018.08.09
STL 기초  (0) 2018.08.08
Comments