본문 바로가기
CS

[CS/SW설계] Object oriented development - 객체지향 개발의 개념 1

by Warehaus 2022. 3. 25.

 

객체 지향 개발의 개념

 

이전 포스팅에 이어서 객체지향 개발의 개념에 대해 알아봅니다.

 

2022.03.24 - [CS] - [CS/SW설계] Basic principles of object oriented - 객체지향의 기본 원리에 대해

 

Software development

 

객체지향 개발을 알아보기 전에 우선 Software development (소프트웨어 개발) 이 무엇인지에 대해 생각을 해봐야 합니다.

 

소프트웨어 개발이라는 것은 아래와 같이 정의할 수 있겠습니다.

 

"Solving problems with software in computer"

컴퓨터 소프트웨어를 가지고 문제를 해결하는 것

 

즉, 현실에서의 문제를 컴퓨터 프로그램을 만들어 실행함으로써 해결하는 것을 의미합니다.

 

이 과정에서 크게 3가지 단계를 거치게 됩니다.

 

1. 현실에서의 문제 정의 및 풀이

 

현실 세계에서 정의 된 문제를 언어 또는 약속된 규칙을 이용하여 해결합니다.

자연어를 통해 문제를 해결할 수 있으며, 이는 수학 공식으로도 표현될 수 있을 것 입니다.

 

정의 된 문제의 예시는 다음과 같습니다.

 

- 강남에서 종로까지의 대중교통 경로

- 1 + 1 의 덧셈 결과

 

이런 문제를 현실세계에서는 여러 방법으로 해결할 수 있지만, 이를 소프트웨어라고 부르고 있지는 않습니다.

 

 

2. Computer에서의 문제풀이 작성

 

이제 앞 단계에서 정의 된 문제를 컴퓨터로 옮겨 보겠습니다.

 

문제를 해결하려면 자연어가 아닌 컴퓨터가 이해할 수 있는 언어로 바뀌어야 하는데, 기본적으로 컴퓨터는 이진수를 바탕으로 계산을 수행하는 Logical unit이기 때문에, 프로그래밍 언어로 작성 해 줘야 합니다.

 

자연어로 정의 된 문제를 해결하는 프로그램을 구현하면 이 단계는 마무리 됩니다

 

3. 실행 및 문제해결

 

이제 프로그램을 실행하고 문제를 해결하는 단계입니다.

컴퓨팅 환경에서 프로그램을 실행하고, 원하는 결과를 얻습니다.

 

 

Procedure programming

 

객체지향 개념이 나오기 전에는 절차지향 프로그래밍이라는 개념이 일반적이었습니다.

C 나 Fortran 언어로 만들어진 프로그램이 절차지향 프로그래밍으로 만들어진 소프트웨어라고 보면 될 것 같습니다.

 

Procedure는 변수를 변경하는 것을 하나의 상태로 표현이 가능하고 이런 상태들을 순차적으로 나열함으로써 문제를 해결하는 프로그램을 의미합니다.

 

Procedure가 곧 Function을 의미하며, 절차지향 프로그래밍에서는 함수의 자료구조, 알고리즘 그리고 순차적 단계를 어떻게 잘 만들어 나가느냐를 중요하게 생각합니다.

 

절차지향 프로그래밍 에서는 Structured Analysis and Structured Design (SASD) 를 이용한 구조적 방법 설계방식을 이용하는데요, Top-down / Divide and Conquer 방식을 주로 문제해결에 적용하여 해결합니다.

 

Structured Analysis (SA) 단계에서는 Data Flow Diagram을 그려내고

Structured Design (SD) 단계에서는 Structured chart 를 만들고 설계를 실제로 구현하는 것을 준비하게 됩니다.

 

이제 Object Oriented Programming에 대해 알아보겠습니다.