객체 지향 개발의 개념
이전 포스팅에 이어서 객체지향 개발의 개념에 대해 알아봅니다.
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에 대해 알아보겠습니다.
'CS' 카테고리의 다른 글
Use case 의 종류 3가지 ( Brief, Casual, Fully dressed ) (0) | 2022.04.06 |
---|---|
[디자인패턴] Singleton pattern (싱글톤 패턴) 의 Java 코드구현 예시 - 단일 스레드 환경 (0) | 2022.04.05 |
[CS/SW설계] Basic principles of object oriented - 객체지향의 기본 원리에 대해 (0) | 2022.03.24 |
윈도우 에서 리눅스처럼 hosts 를 바꾸는 방법 - hosts file in Windows 10 (0) | 2022.03.23 |
gcov를 이용한 C++ 코드 커버리지의 확인, 테스트 지표 사용하기 (0) | 2022.03.18 |