2013년 1월 29일 화요일

헤드퍼스트 OOAD 들어가기 전 워밍업 (상속, 다형성)

일단 아래 그림을 보자.


두 클래스를 표현한 다이어그램이 있다.

부모가 자식에게 내리 사랑이니 화살표가 잘못된거 아니냐고 따질수도 있는데.

원래 표기법이 이렇다고한다 -0- 

자식이 부모에게 속한다고 표현을... 하여간 이리 아시고

자~ 이걸 소스로 표현해보자 (자바로 설명하는 이유는.... 책이 자바로 설명되어 있으니깐!)

pulbic class Jet extends Airplane {
   private static final int MULTIPLIER = 2;
   public Jet() {
      super()
   }
   public void setSpeed(int speed) {
      super.setSpeed(speed * MULTIPLIER);
   }
   public void accelerate() {
      super.setSpeed(getSpeed() * 2);
   }
}

라고 표현을 했다. 

extends b 는 a가 b를 상속 받겠다는 뜻이다.

super() 는 클래스가 상속한 클래스를 가르킨다. 
즉, Jet의 슈퍼 클래스인 Airplane 의 생성자를 호출하겠다는 뜻이다.

1줄 요약: 상속은 다른 클래스를 기반으로 클래스를 만들게 하고, 중복되는 코드를 피할 수 있게 하는 것.

-다형성 이란?-

다형성 역시 아까  윗 그림을 통해 설명할 수 있다. 위로 올리기 귀찮으니 다시 올린다.


다형성은 상속과 관련이 있다. 한클래스가 다른 클래스를 상속하면, 

다형성은 서브 클래스(Jet)가 슈퍼클래스(Airplane)를 대신할 수 있도록 허용한 것이다.

즉, 코드로 표현하자면.....

Airplane plane = new Airplane();  을 

Airplane plane = new Jet(); 로 표현할 수 있다는 것이닷!!

그럼 다형성을 쓰는 이유가 뭘까??

만약 비행기라는 커다란 클래스가 있다면 비행기에는 필수적인 요소가 들어있다.
하지만 세세하게는 없다는 것이다.
하늘을 난다는 것은 같지만 로켓에는 날개가 없고, 아이언맨도 날지만 날개가 없다. 
쓰는 연료도 다르고, 탑승객 수도 다르다.
이런 세세하고 디테일한 모습은 서브클래스를 만들어서 추가를 하면 되는 것이다.
애초에 비행기라는 슈퍼클래스를 이어 받았으니 코드 중복을 막을 수 있다.

상속과 다형성을 쓰는 이유 = 코드 중복을 막자!! 









2013년 1월 27일 일요일

헤드퍼스트 OOAD 들어가기 전 워밍업(UML)

워밍업이라곤 하지만 1강 들어가보니

객체지향이 생소한 놈들은 부록2로 가라는 책님의 말씀에 부록2로 이동해보니

객체지향으로 말하기 라는 항목이 있네~ 이걸 연재해보겠음


뭐를 공부할까 하다가 결론 냈음

결론은 OOAD 임 ^^

자료구조를 먼저하려다가.... 이 책을 먼저 샀기에 이걸 먼저 공부하며 공부한 내용을 올리겠음~

OOAD란??

Object-Oriented Analysis & Design

겍체지향 분석과 디자인? 정도 되겠습돠~

C하고 나서 왠 갑자기 뜬금없이 객체지향이냐?

라고 한다면.......

걍!!


2013년 1월 26일 토요일

후아~~ 이제야 C 정리 헉헉

다음은 뭐를 정리할 지 생각 중~~

아마도 JSP나 자료구조가 될 듯??

C 언어 핵심 정리 -스레드 편-


  1. 스레드를 사용하면 한 프로세스가 한꺼번에 여러 가지 일을 할 수 있음
  2. 스레드는 경량 프로세스 임
  3. pthread(포직스 스레드)는 스레드 라이브러리
  4. pthrread_create()는 함수를 실행하는 스레드를 생성
  5. pthrread_join()은 스레드가 종료할 때가지 기다림
  6. 스레드는 전역 변수를 공유
  7. 두 스레드가 동시에 한 변수를 읽고 쓰면 결과를 예측 불가
  8. 뮤텍스는 공유 데이터를 보호하기 위한 락
  9. pthread_mutex_lock() 는 뮤텍스에 락을 검
  10. pthread_mutex_unlock() 는 뮤텍스에 건 락을 해제

C 언어 핵심 정리 -소켓과 네트워킹편-


  1. 텔넷은 간단한 네트워크 클라이언트
  2. socket() 함수로 소켓을 생성
  3. 서버 블랍(BLAB) 
  4.  B(bind) - 바인딩, L(listen) - 듣기, A(accept) - 접수, B(begin) - 대화시
  5. fork()로 한꺼번에 여러 클라이언트를 처리
  6. DNS = 도메인 이름 시스템
  7. getaddrinfo()는 도메인 이름에 대한 주소를 찾음

C언어 핵심 정리 -프로세스와 통신 편-


  1. system()은 터미널에서 명령을 입력한 것 처럼 문자열을 실행
  2. fork() 는 현재 프로세스를 복제
  3. fork() 와 exec()로 자식 프로세스를 생성
  4. 프로세스들은 파이프로 통신
  5. pipe()는 통신 파이프를 생성
  6. exit()는 프로그램을 바로 종료
  7. waitpid()는 프로세스가 종료할 때까지 가다림
  8. filno() 는 디스크립터 번호를 반환
  9. dup2()는 데이터 스트림을 복제
  10. 시그널은 운영체제가 보내는 메시지
  11. sigaction()은 시그널을 직접 처리
  12. 프로그램은 raise() 로 자신에게 시그널을 보낼 수 있음
  13. alarm() 은 지정한 시간 후에 SIGALRM 시그널을 보냄
  14. kill 명령은 시그널을 보냄
  15. 단순한 프로세스는 한번에 한 가지 일만 함