일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 휘북이
- Visual Studio Emulator
- ror
- 자원봉사
- 휘파람
- 루비
- 성산2동
- 자원활동
- 에뮬레이터
- 레일즈
- 이벤트
- 봉사활동
- 안드로이드
- 마포구
- Ruby
- Ruby on Rails
- 크롤링
- 독후감
- 휘북이학교
- rails
- Visual Studio
- Android
- 루비온레일즈
- 비주얼 스튜디오
- MariaDB
- c++
- 프로그래밍
- 친구초대
- 휘파람부는거북이
- It
- Today
- Total
DailyOscar
C와 C++의 간단한 철학 본문
일반적으로 컴퓨터 언어는 데이터와 알고리즘 이 두 가지 개념을 다룬다.
Data : 프로그램이 사용하고 처리하는 정보
Algorithm : 프로그램이 데이터를 처리하는 방법
-> Program = Data + Algorithm ;
C는 절차적(Procedural) 언어이다.
절차적이라는 말은 프로그래밍에서 데이터보다 알고리즘에 더 치중한다는 뜻이다.
개념적으로 말해서, 절차적 프로그래밍은 컴퓨터가 수행해야할 동작들을 명확히 구분하고,
그 구분된 동작들을 프로그래밍 언어로 구현하는 것이다.
즉 원하는 결과를 얻기 위해 컴퓨터가 따라야 할 절차들을 규정해 놓은 것이 절차적 프로그램이다.
케이크를 만들기 위한 재료들 (버터, 설탕, 달걀 등..) -> 데이터
케이크를 만들기 위한 동작들 (크림을 만든다, 설탕을 친다, 달걀을 깬다 등) -> 알고리즘
또한 C언어는 구조적 프로그래밍을 지원한다.
하향식(top-down) 설계는 구조적 프로그래밍이 고수하는 하나의 철학이며
C언어에서는 규모가 큰 프로그램을 작고 다루기 쉬운 단위 작업들로 쪼개는 것이다.
쉽게 다룰 수 있는 최소한의 단위까지 쪼갠다.
그러면 전체 프로그램이 프로그래밍하기 쉬운 작은 모듈들의 집합이 된다.
(방 -> 책상, 서랍, 책꽂이, 침대 등등)
C언어에서는 개별적인 작업을 수행하는 Function단위로 프로그램을 개발한다.
----------------------------
C++의 등장
규모가 큰 프로그래밍은 여전히 어려운 문제로 남아 있었다.
그 해결책으로 객체 지향 프로그래밍(Object Oriented Programming)이 등장하였다.
절차적 프로그래밍은 알고리즘을 강조하지만, 객체 지향 프로그래밍은 데이터를 강조한다.
또한, 객제 지향 프로그래밍은 해결해야 할 문제를 언어의 절차적 접근 방식에 억지로 끼워 맞추지 않고,
언어 자체를 해결해야할 문제로 맞춘다.
즉, 해결해야 할 문제의 특성에 맞게 데이터형 자체를 설계한다.
C++에서는 클래스(Class)가 그와 같은 목적으로 설계되는 새로운 데이터형이다.
객체(Object)는 그러한 클래스에 의해 만들어지는 특정한 데이터 구조이다.
일반적으로 클래스는 객체를 나타내는 데이터 부분과,
그 데이터를 대상으로 수행할 수 있는 동작 부분으로 정의된다.
사각형을 그릴 수 있는 드로잉 프로그램을 개발한다고 가정 했을 때,
사각형의 위치, 가로세로의 길이 색상 등이 클래스의 데이터 부분이 된다.
그리고 사각형을 다른 위치로 옮기거나, 복사, 크기변경 등의 작업은 클래스의 동작 부분이 될 수 있다.
사각형 객체는 실제로 사각형을 나타내는 모든 데이터 값을 가지게 되며,
사각형 클래스의 동작부분을 메서드들을 사용해서 그 사각형을 수정할 수 있다.
사각형을 두개 그려야 한다면?
사각형 객체를 두 개 생성하면 된다.
객체 지향적으로 프로그램을 설계하려면
프로그램이 다루어야 하는 객체를 정확하게 서술하는 클래스를 먼저 설계해야한다.
위에 말한 드로잉 프로그램을 개발하기 위해서는
사각형, 선, 붓, 펜 등을 정확하게 서술하는 각각의 클래스를 먼저 정의 해야 한다.
이 때, 원을 옮기거나 선을 회전하는 등의 동작은 해당 클래스의 정의에 포함되어야만 한다.
그리고 나서, 각 클래스에 해당하는 객체를 만들어가면서 프로그램 설계를 계속 진행한다.
이렇게 저수준의 클래스를 먼저 설계한 후에 고수준의 프로그램 설계로 진행하는 것을 상향식(bottom-up) 프로그래밍이라고 한다.
데이터와 메서드를 클래스 정의 안에 함께 넣을 수 있는 것 외에도
OOP의 몇 가지 특징이자 장점이 있지만 생략.
따라서, OOP는 해결해야 할 작업이 아니라
개념 자체를 표현하는 데 주안점을 두고 상향식으로 프로그래밍을 진행 한다.
출처 : 책 C++ 기초 플러스 5판 Stephen Prata 저, 윤성일 역 성안당, 페이지 4-6
오늘의 타자연습 끝
'IT' 카테고리의 다른 글
[Ruby on Rails] 네이버 실시간 급상승 검색어 크롤링 (0) | 2017.11.30 |
---|---|
IntelliJ에서 Visual Studio Emulator 사용하기 (0) | 2016.09.23 |
Visual Studio Emulator for Android 설치 및 사용하기 (0) | 2016.09.23 |
비주얼 스튜디오 코드 편집 창에 배경화면 넣기! [ClaudiaIDE] (0) | 2016.05.02 |
C++ 변수에 관한 소소한 지식 (0) | 2016.02.16 |