Computer Science/디자인패턴

Introduction Advanced OOP

계속지나가기 2020. 10. 18. 12:52
반응형

Advanced OOP-0-Introduction

소프트웨어 왜 문제인가?

  • 소프트웨어 위기
  • 위기의 원인?
  1. 소프트웨어 개발 프로세스의 복잡성
  2. 소프트웨어 공학의 미성숙
  3. 소프트웨어 규모가 커짐

소프트웨어의 품질

  • 품질 문제는 정해진 시간에, 정해진 노력으로, 정해진 요구사항을 해결하지 못함
  • 소프트웨어는 보이지 않기 때문에 품질 판단이 더욱 어려움

소프트웨어의 심각성

  • 소프트웨어가 대형화되면서 더욱 위기가 심각해짐
  • 소프트웨어 대형화로 인한 문제
  1. 협업의 문제 : 설계의 중요성
  2. 요구사항의 문제 : 요구사항은 계속해서 늘어남

소프트웨어 심각성

  • 소프트웨어 오류의 심각성
  1. 눈에 보이지 않아서 오류의 심각성을 중요치않게 생각함
  2. SW 오류로 생명의 손실 발생 가능 ex:) 자율주행사고
  3. 경제 손실 발생 가능

좋은 SW란?

  • 좋은 SW는 사람 중심.
    : 기능성, 효율성, 유지보수성, 재사용성, 가독성 등이 중요

객체지향 프로그래밍

  1. SW위기를 해결하는 방안으로 패러다임이 변화
  2. 객체 지향의 특징을 이해해야함
  • 비객체지향과 비교해서 무엇이 다른지
  • 공통 부분을 재사용하는 방법으로 상속을 이해해야 함

객체지향 프로그래밍이란?

  • 프로그래밍 하는 스타일 중 한가지
  • 절차적 프로그래밍의 문제점을 개선한 프로그래밍 방법

절차 중심 프로그래밍 방법의 문제점

  1. 객체 지향 프로그래밍은 절차 중심 프로그래밍 방법
  2. 절차 중심 프로그래밍의 문제
  • 절차와 데이터가 분리되어 있음.
  • OOP에서는 클래스를 이용해서 데이터와 절차를 묶어서 한 개의 자료형으로 취급할 수 있음

클래스와 객체

  1. OOP에서 코드는 객체로 구성
  2. 클래스
  • 객체의 속성과 함수를 정의
  • 객체의 속성과 기능을 설명하는 자료
  • 제품의 설계도 또는 템플릿에 해당
  1. 객체 또는 인스턴스
  • 클래스로부터 만들어지는 실체
  • 설계도로부터 생성된 제품

OOP의 특성

  1. 추상화
  • 복잡한 사물로부터 핵심적인 속성 또는 기능들을 추출하는 작업
  1. 캡슐화(은닉)
  • 데이터와 함수들을 클래스 내에 담고 사용자가 사용할 수 있는 부분만 보이도록 하고 나머지는 내부에 감추는 것
  • 내부코드와 데이터를 보호
  • 인터페이스만 보여줌으로써 쉽게 사용할 수 있게 함
  1. 상속
  2. 다형성

접근자(getter)와 설정자(setter) 메소드

  1. 접근자
  • 주로 멤버 변수의 값을 반환하는 용도로 사용
  • ex : getAge(0
  1. 설정자
  • 멤버 변수의 값을 수정하는 용도로 사용
  • 새로운 값을 인자로 전달 받음
  • ex : setAge(30)

UML 클래스 다이어그램

  1. 세 개 영역 : 클래스 이름, 멤버 변수, 멤버 함수로 나누어 표기
  2. 클래스 다이어그램간의 관계
  3. Assosiation 연관
  • 두 개의 클래스가 참조 관계에 놓여 있음
  1. Aggregation 집합
  • A가 B를 포함하고 있을 때, B가 A없이도 존재할 수 있다면 집합 관계
  1. Composition 합성
  • A가 B를 포함하고 있을 때, B가 A없이 존재할 수 없다면 합성 관계

시퀀스 다이어그램

상속

  1. Parent -> Child : 특수화 과정
  2. Child -> Parent : 일반화 과정
  3. 자식 객체는 부모 변수에 저장 가능하나, 반대는 불가
반응형