2. 들어가기에 앞서…
이 PPT는 C언어 문법을 익힌 사람을 대상으로 만들었습니다
이 PPT는 Java를 사용해서 설명하고 있습니다
이 PPT는 필자의 개인적인 생각으로만 이루어져 있습니다
따라서 이 PPT는 신뢰도가 매우 낮습니다
본문에서는 반말씁니다
3. 주의할 점
절차지향과 객체지향은 프로그래밍 언어가 아닙니다
절차지향과 객체지향은 하나의 패러다임입니다
단지 두 패러다임을 설명하기 위해 C와 Java를 사용하고 있을 뿐입니다
※패러다임 – 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계.
또는 사물에 대한 이론적인 틀이나 체계
9. 절차지향 vs 객체지향
그러면 절차지향하고 객체지향의 차이점은 무엇인가?
하나의 예를 들겠다
C언어에서 계산기가 필요하다고 하자
계산기 프로그램을 만드는 것이 아니다. 코딩할 때 계산기라는 어떤
데이터가 필요하다는 것이다.
10. 계산기 만들기
계산기를 만드려면 무엇이 필요할까?
많은 기능이 있겠지만 우리는 덧셈, 뺄셈, 곱셈, 나눗셈만 필요하다고 하자
C언어에서는 이 기능들을 함수로 만들 수 있다
11. 계산기 만들기
(0으로 나누는 경우같은 예외는 모두 생략)
계산기에 필요한 기능들을 만들었다
그럼 여기서 생각해보자
Add는 계산기인가? 아니다
단지 덧셈만 수행하는 계산기의 기능 중 하나다
Sub는 계산기인가? 아니다
Mul는? Div는? 모두 아니다
12. 계산기 만들기
방금 만든 함수들을 모두 합쳐야 계산기라고 할 수 있을 것이다
그럼 어떻게 합칠까??
함수를 따로 만들어보자
13. 계산기 만들기
계산기라는 함수를 만들었다
안에 덧셈, 뺄셈, 곱셈, 나눗셈 기능도
포함되어 있다
그러면 이것은 계산기인가??
역시 아니다
우리가 아는 계산기는 한 번에
덧셈, 뺄셈, 곱셈, 나눗셈을 하지 않는다
14. 계산기 만들기
우리가 아는 계산기는 사용자가 원하는 기능만 수행할 수 있다
덧셈만 원하면 덧셈만, 뺄셈만 원하면 뺄셈만 할 수 있어야 한다
그러면 원하는 기능만 사용할 수 있도록 하자
분기문을 이용하면 된다
15. 계산기 만들기
Switch문을 이용해 원하는 기능만 쓸 수
있도록 했다
이제는 계산기라고 불릴만 하다
하지만 문제가 있다
사용자가 첫번째 인자에 어떤 값을 전해주는지
알아야 한다
16. 계산기 만들기
어떤 데이터를 사용할 때 사용자가 알아야 하는 것이 있다면 바람직한 구조가 아니다
방금 만든 계산기는 각 기능에 대해 그에 맞는 숫자(0,1,2,3)을 알고 있어야 한다
또한 숫자의 의미도 파악하기 힘들다
그러면 어떻게 해야 사용자가 쉽게 쓸 수 있을까?
다음 코드를 보자
17. 계산기 만들기
1. 계산기 구조체를 만든다
구조체 안에는 덧셈, 뺄셈, 곱셈, 나눗셈
함수의 주소를 저장할 수 있는 함수 포인터가
들어있다.
18. 계산기 만들기
2. 계산기 구조체를 선언한 후 구조체 안의
변수를 초기화 한다
초기화 안하면 이름만 add, sub, mul, div
이고 쓰레기 값이 들어있다