2014년 2월 4일 화요일

20140204 객체 지향 프로그래밍

제목이 거창한 이유는 지금 보는 책의 7장 제목이기 때문이다.

  1장~6장 까지는 '프로그래밍을 해봐야지~'라고 마음먹은 사람들은 수십번도 더 했을 제어문, 반복문 인수 등의 내용이므로 과감하게 생략한다.
- 그러나 우습게 보지는 않습니다. 올림피아드 초딩학생꺼 문제도 잘 못풀어요......ㅠㅠ

  각설하고, 높임말도 없이 책에 있는 고리타분한 내용은 책읽기로 미뤄두고 아주 부정확하게 하루씩 정리하려고 한다.

  뭐 일단 제목이 OOP이므로....
객체 지향 프로그래밍(OOP)
      : Object Oriented Programming.되시겠다.

1. 객체를 소주와 레고로 비유를 해서 알려주셨는데, 상당부분 이해할 수 있어서 편했던것 같다.
  객체와 뗄 수 없는 것은 인스턴스인데 내가 이해한 것을 토대로 해보면
객체(Object) : 추상화 속의 틀
인스턴스(Instance) : 객체(추상적 틀)를 이용한 실체화.
이렇게 정리할 수 있었다. 물론 틀렸을 수 있지만, 상관하지 않는다. 앞으로 더 명확하게 개념을 잡을 것이고 틀렸다면 누군가 알려주겠지.. :)

2. 객체 지향의 장점
  장점으로 꼽히는게 바로 API 이다. 네모난 블럭을 가지고 트럭, 비행기, 나무 등의 물체를 만들 수 있는 레고같은 아이란다.
  어쩌면 sosang92횽과 이야기 했던, 낭패와 같은 장점이랄까..

첫째로 나는 프로그래밍에 자신이 없다. 근데 아이디어가 있다.
  -> API를 이용해 '원하는 무엇'을 만든다.
sosang92 - 나무집을 짓는데 벌목해서 나무를 가공하는 것이 C 라면 누군가 이쁘게 가공해놓은 것들로 집을 짓는 행위가 바로 API를 이용하는 것 아닐까요?
내가 느낀 API의 처음 장점은 이것이고,

두번째로 느낀 장점이자 단점은 '많은 생각을 할 필요가 없다.' 이다.
  -> 내가 고민하고 해결하지 않아도 비슷한 고민을 한 선구자(선배님, 천재님 등)가 존재한다. 고로 내가 원하는 모양과 비슷 혹은 아주 안성맞춤으로 만들어 놓으셨을 것이다.
이제 나는 많은 고민을 하지 않고 가져다 쓰거나 혹은 조금만 가공해 사용하면 된다.

물론 기본적인 전제는 '프로그래밍 실력 : 초급'은 되어야 한다는 점이고 이는 충분히 인지하고 있는 상태다.

3. 그외에 상속, 캡슐화, 쉬운 디버깅등의 내용이 있지만 아직 접해보지도, 책에서 읽어보지도 않았기 때문에 과감히 패쓰!

4. 클래스(Class) 선언
  클래스의 이름은 '항상 대문자'로 시작한다. - 수학의 axiom정도로 이해했다.
클래스는 파일 하나당 클래스 하나 (1:1)이 프로그래머들의 공리라고 한다.

코드를 직접 붙여넣고 싶은데... 조만간 찾아봐야겠다.

5. 인스턴스화
  클래스의 내용 중 아직 초기화 되지 않은 필드들에 내용을 집어 넣어 구체화 시키는 작업이다.
(클래스 파일에서) 클래스의 필드 int x; 라는 변수가 있다면
(메인 메소드가 있는 클래스 파일에서)인스턴스화는 x=0; 쯤으로 이해했다.


음.... 이렇게 쓰면 안될것 같지만 쓴게 아까워 일단 게시.
글 쓰는 법 책으로 읽었는데 글로 배워서 잘 못쓰는가 싶다. ㅠㅠ
일단 식고 자자.

댓글 없음:

댓글 쓰기