Upload
qoojuice
View
1.499
Download
0
Embed Size (px)
Citation preview
들어가기에 앞서…
이 PPT는 C언어 문법을 익힌 사람을 대상으로 만들었습니다
이 PPT는 Java를 사용해서 설명하고 있습니다
이 PPT는 필자의 개인적인 생각으로만 이루어져 있습니다
따라서 이 PPT는 신뢰도가 매우 낮습니다
본문에서는 반말씁니다
주의할 점
절차지향과 객체지향은 프로그래밍 언어가 아닙니다
절차지향과 객체지향은 하나의 패러다임입니다
단지 두 패러다임을 설명하기 위해 C와 Java를 사용하고 있을 뿐입니다
※패러다임 – 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계.또는 사물에 대한 이론적인 틀이나 체계
절차지향 vs 객체지향
그러면 객체지향은 순서대로 실행되지 않는가?
아니다객체지향도 코드는 위에서부터 아래로 순서대로 실행된다
사실 엄밀히 말하면 순서대로 실행된다는 개념은 명령형 프로그래밍이다(절차지향하고 다름)
절차지향 vs 객체지향
그러면 절차지향하고 객체지향의 차이점은 무엇인가?
하나의 예를 들겠다
C언어에서 계산기가 필요하다고 하자
계산기 프로그램을 만드는 것이 아니다. 코딩할 때 계산기라는 어떤데이터가 필요하다는 것이다.
계산기 만들기
(0으로 나누는 경우같은 예외는 모두 생략)
계산기에 필요한 기능들을 만들었다
그럼 여기서 생각해보자
Add는 계산기인가? 아니다단지 덧셈만 수행하는 계산기의 기능 중 하나다
Sub는 계산기인가? 아니다Mul는? Div는? 모두 아니다
계산기 만들기
계산기라는 함수를 만들었다
안에 덧셈, 뺄셈, 곱셈, 나눗셈 기능도포함되어 있다
그러면 이것은 계산기인가??역시 아니다
우리가 아는 계산기는 한 번에덧셈, 뺄셈, 곱셈, 나눗셈을 하지 않는다
계산기 만들기
우리가 아는 계산기는 사용자가 원하는 기능만 수행할 수 있다
덧셈만 원하면 덧셈만, 뺄셈만 원하면 뺄셈만 할 수 있어야 한다
그러면 원하는 기능만 사용할 수 있도록 하자
분기문을 이용하면 된다
계산기 만들기
어떤 데이터를 사용할 때 사용자가 알아야 하는 것이 있다면 바람직한 구조가 아니다
방금 만든 계산기는 각 기능에 대해 그에 맞는 숫자(0,1,2,3)을 알고 있어야 한다
또한 숫자의 의미도 파악하기 힘들다
그러면 어떻게 해야 사용자가 쉽게 쓸 수 있을까?
다음 코드를 보자
절차지향 vs 객체지향
우리가 만든 계산기는 새로운 기능이 있을 때마다 함수를 추가해야 하고
구조체에 그에 맞는 함수 포인터를 새로 만들어야 하며
초기화 부분도 새로운 코드를 추가해야 한다
절차지향 vs 객체지향
여기서 절차지향의 특징이 보인다
절차지향은 데이터(구조체)와 함수(기능)가 분리되어 있다는 것이다(즉, 독립적이다)
그러면 객체지향은 어떨까?
객체지향은 우리가 만든 계산기를 “객체”로 만들 수 있다
절차지향 vs 객체지향
C언어에 비해 훨씬 간단해진 것이 느껴졌는가?
이렇듯 객체는 데이터와 기능이 함께 있어 사물을 묘사하기가절차지향보다 직관적이고 편리하다(아까 만든 계산기를 생각해보자)