2011년 2월 11일 금요일

객체지향 이야기(전병선 저) - 6장 홈 씨어터 구미기 - 인터페이스와 실현


인터 페이스의 의미에 대해 정말 간략히 설명해주는 그림이 있었다.

ICompositeVideo, IDVideo, IComponentVideo Interface를 정의하고

구현 함으로써 DVD와 TV 객체간의 의존성을 제거 시켰다.

이게 왜 상속보다는 Interface를 구현해서 사용해야 함을 보여주는 예인것 같다.

객체지향 이야기(전병선 저) - 6장 홈

객체지향 이야기(전병선) - 4장 혼자서는 살수 없어요! - 클래스 사이의 관계 종속과 연관

1. 종속관계
- 대학교때 이해못했던 UML 화살표하나를 이해했다. ------>(종속)
- 정비공과 자동차의 관계
- 정비공은 자동차의 세부내역이 바뀔때마다 영향을 받지만 자동차는 정비공에 상관없이 수리만 제대로 되면된다.
- 정비공 ----->(종속) 자동차 관계가 형성된다.
!! 일반적으로 메소드의 인수로서 다른 클래스를 사용하는 경우 대부분 종속관계를 이루게 된다.
class Repairman{
//생략..
public void Repair(Car repairCar){
// Car클래스를 사용하기에 Car에 dependent.
}
}
!! 메서드 내부에서만 살아있는 객체를 사용할 경우에도 종속관계가 성립된다.
class OwnerDriver{
private Car myCar
public void Repair(){
//스스로 수리할수 없는 경우 정비사를 고용한다
RepairMan aRepairMan = new RepairMan();
aRepairMan.repair(myCar);
}
}

2. 연관관계
- 연관관계도 명확하게 설명해준다. :)
- 자가 운전자와 자동차의 관계이다.
- 자가 운전자를 알면 그 운전자가 어떤 차를 소유하고 있는지 알수 있다. 역도 성립한다.
!! 자바경우 참조변수를 멤버로 포함할 경우
class Driver{
// 1 대 1관계
private Car myCar;
// 혹은 1대 다 관계
private Vector myCars = new Vector();
}
!! 연관 관계에서 집합(aggregation)과 복합(composition)의 차이
- 복합 경우 좀더 단단한 관계를 가진다. 보통 객체와 주기를 같이 한다고 한다.
- 이말은 생성자에서 객체의 레퍼런스를 만들고 소멸자에서 Free를 시켜준다는 의미일것이다.
- Java경우 소멸자 정의는 필요없다.

객체지향 이야기(전병선) - 3장 the 클래스 - 클래스의 개요

이번장은 Java책의 클래스를 쉽게 풀어서 설명 하는 느낌이다.
UML에 대해 다시한번 공부 할수 있는 기회였다.

이번장에 건진 내용은
- 코딩을 하기전에 먼저 객체에 대해 정확한 정의가 필요하다는 내용이었다.
- 메시지 보내기 설명을 위해 자동변속기와 수동 변속기를 사용하는 자동차 예를 사용했다.
- 자동변속기 경우 changeSpeed()를 내부에 숨기지만 수동 변속기 경우 외부(사용자)에게 노출 시킨다.
잘못된 인터페이스 노출은 객체간의 coupling을 증가 시키기고 유지보수를 힘들게 할것이다.
이게 물론 하루아침에 이루어 지지는 않게지만 항상 명심해야 할듯 하다.

객체지향 이야기(전병선) - 2장. 미션 임파서블 - 객체지향을 이해하

* C만 하다보니 대학교때 들었는 객체라는 개념이 너무 막막하여 전병선씨의 '객체지향 이야기'를 중고로 샀다.
2장만 읽었는데도 내공이 대단하다는걸 느낄수 있다. 많이 알수록 쉽게 설명해줄수 있다는 말이 진리임을 보여준다.

1. 소프트웨어에서 중요한것은 데이타이고 객체지향에서는 캡슐화로 모든것을 클래스 안에 숨겨 외부사용자는
인터페이스만 알면 사용할수 있게 해준다.
- Effective 자바에서 멤버변수는 무조건, 무조건 private이어야 한다는 의미를 좀 더 알겠다.

2. 객체란?
- 애플리케이션에서 명확한 한계와 의미를 갖는 사물이나 개념 또는 추상화로서 특성(멤버변수)와 행위(메소드) 그리고
정체성(Java경우 HashCode)을 하나의 단위로 포함하여 캡슐화 하는 것.


3. 메시지 보내기?
- 상대 객체가 대상 객체에게 명령을 하는 것을 메시지를 보낸다고 한다.

2011년 2월 9일 수요일

오라클 수업_1

1. 컴퓨터는 날짜를 어떻게 저장할까?
- 1970/1/1 0시를 기준으로 흘러간 시간을 밀리세컨드 단위로 저장한다.
따라서 DB에 3600000(1000*60*60)가 저정되어져 있다면 Date 값은 1970/1/1 1시이다.
- order by date desc를 한다면 가장 최근이 먼저 보인다.( 오래될수록 저장되어진 값은 크기 때문이다.)

2. select * from v$nls_parameters;
- DB 셋팅값을 확인할수 있는 테이블을 확인하기(나라, 언어, 시간형식등)

3. alter session set XXXXX 을 이용하여 nls_parameters의 col 값을 변경할수 있다
- 하나의 세션에서만 변경이 가능. 다시 로그인 한다면 원래의 값.

4. 오라클에서는 parameter가 없는 함수의 괄호는 생략한다.
- select sysdate, user from dual; 경우 sysdate 와 user는 함수 이다
dual은 오라클에서 만든 값을 뿌리기 위한 dummy table이다.

2011년 2월 8일 화요일

리눅스 파일시스템 구조 #3

10. /var
- 시스템 운영중에 시스템 자료 데이터가 변경될 때 변경된 자료들이 저장되는 디렉토리
주로 시스템 작동 로그들이 저장, 네트워크에 관련된 기록 파일들 저장
보안 기록을 저장, 메일 서버 운용시 전송된 메일을 받아 저장하고 있는 임시 디렉토리
-/var/log : 시스템 로그
-/var/named : 네임서버 설정 파일
-/var/spool/mail : 수신 메일을 사용자 명으로 기록하는 디렉토리.

11. /usr
- 많은 파일들이 있다
- /usr/bin : 압축파일 과 네트워크 실행파일, 자료전송 파일등.
- /usr/sbin : 네트워크 관련 실행파일 및 데몬
- /usr/include : 기본 C 라이브러리 헤데파일 및 각종 라이브러리 헤더 파일
- /usr/src : 리눅스 소스가 있음
- /usr/X11R6 : X-Window 시스템에 관련된 파일

12. /lost+found
- 시스템 이상유무 체크시 복구하지 못한 디렉토리와 파일 저장

13. /media(/mnt)
- 외부 장비 mount시키는 곳

14. /tmp
- 시스템에서 일어나는 작업들에 대해서 임시로 저장되는 디렉토리