Wednesday, October 7, 2009

Object, Class, Package

이페이지는 http://java.sun.com/docs/books/tutorial/java/concepts/index.html 를 정리 번역한 것입니다.
.

Object
자바는 흔히 객체지향 언어라고 합니다. 그럼 객체란 무엇인가요? 객체(Object)를 가장 쉽게 이해할수 있는 방법은 우리주위를 그냥 무엇이 있는지 둘러보고 무엇이 있는지 보는 겁니다. 컵이 보이고 볼펜이 보이고 창문을 통해 옆집이 보입니다. 이것들이 다 객체들입니다. 소프트웨어세계의 객체는 이러한 실생활속에 객체와 그리 다르지 않습니다. 일단은 실생활 속의 객체들을 소프트웨어 세계로 추상화한것이라 생각하면 쉽습니다.

객체는 상태(State)와 행위(Behavior)의 두가지 속성을 가집니다. 상태에 대한 답을 하기위해 이런 질문을 던져봅니다. 이 객체는 어떤 상태에 있습니까? 그 객체가 자전거이라면 그 색깔, 크기, 변속기의 유무, 달려있는 변속단수가 상태가 될수 있을겁니다. 행위라면 그 객체가 할수 있는 행위, 가는것, 서는 것, 페달이 돌아가는것, 등등이 될겁니다.

이 실생활의 상태와 행위개념은 소프트웨어의 세계로 들어어면서 필드와 메소드의 개념으로 대치됩니다. 필드는 자전거의 색깔이 되는 것이고 그안에 파란색이다, 빨간색이다의 변수(Variable) 개념이 들어가면서 상태가 소프트웨어적으로 정의 되는 겁니다. 행위는 소프트웨어 객체가 할 수 있는 일이 됩니다. 행위는 객체 내부의 행위일수도 다른 객체와 의사소통을 하는 일이 될수도 있습니다.

Class
이제는 개념적으로 정의한것을 하나하나 더 구체적으로 소프트웨어의 세계로 접목시키는 방법을 볼 단계가 되었습니다. 객체라고 했는데, 그 객체를 자전거 전부로 뭉뚱그려서 정의해야할지 산악자전거, 세발자전거, 로드 자전거로 분류하여 정의할지 모호합니다. 이를 위해 클라스(Class)와 상속(Inheritance)의 개념이 동원됩니다. 일단은 다 뭉뚱그려서 자전거를 하나의 클라스로 만들고, 가장 포괄적인 상태와 행위만을 정의합니다. 이를 수퍼클라스로 하고 그 성격을 상속하여 하위에 좀더 세분화된 클라스를 놓습니다. 산악자전거, 로드자전거, 세발자전거 들이 그것입니다. 이 레벨의 클라스를 정의하면서 산악, 로드만의 독특한 상태들와 행위들을 추가적으로 집어넣습니다. 이런식으로 계속 세분화시켜가면서 프로그램내에서 이용하기 쉬울 정도의 성격을 가진 세부적인 객체를 만들어나갑니다.

이 상속의 관계를 자바의 세계에서는 다음의 표현으로 구현합니다.
class MountainBike extends Bicycle {
 // new fields and methods defining a mountain bike would go here
}

Interface
인터페이스(Interface)는 하나의 객체가 그 외부의 세계와 어떤 행위를 가하거나 당하는것을 말합니다. 자전거라면 기어 단을 바꾸는것, 회전수를 늘리는것, 브레이크를 밟는것이 될겁니다. 이를 자바코드에서는 다음과 같이 구현합니다.
interface Bicycle {
 void changeCadence(int newValue);
 void changeGear(int newValue);
 void speedUp(int increment);
 void applyBrakes(int decrement);
}

그리고 자전거 클라스에는 다음과 같이 implements 라는 문을 사용하여 연결합니다.
class ACMEBicycle implements Bicycle {
 // remainder of this class implemented as before
}

Package
패키지는 위에서 언급하였던 소프트웨어적인 요소를 관련있는것을 모야 하나의 패키지라 이름지워놓은 것으로 뭉뚱그려 모아놓은것을 말합니다. 이 안에는 많은 클라스들이, 자건거의 이미지가, 자전거가 할수있는 행위들의 묶음인 인터페이스가, 자전거의 상태들에 대한 정의들이 들어갈수도 잇습니다

리뷰
마지막으로 다음문장들을 곰곰히 생각해보면서 이제까지 배운것을 정리합니다..
.
실세계의 객체는 상태와 행위를 포함합니다.
Real-world objects contain state and behavior.
.
소프트웨어 객체의 상태는 필드에 저장되어잇습니다.
A software object's state is stored in fields.
.
소프트웨어 객체의 행위는 메소드를 이용하여 구현됩니다. .
A software object's behavior is exposed through methods.
.
소프트웨어세계에서 객체의 모습을 구체화시키는 것은 클라스를 통해 합니다.
A blueprint for a software object is called a class.
.
가장일반적으로 공유되는 행위는 수퍼클라스에서 정의되어지고 상속을 통하여 하위클라스로 공유됩니다. 이 과정에서 extends 라는 키 워드를 사용합니다.Common behavior can be defined in a superclass and inherited into a subclass using the extends keyword.
.
메소드를 모두 모아 놓은 것을 인터페이스라 합니다. 하지만 그 메소드의 행위가 어떤것인지 그 단계단계의 절차까지 이내에 정의 되어있지는 않습니다.
A collection of methods with no implementation is called an interface.

단어정리
객체(Object)
상태(State)
행위(Behavior)
필드(Field)
변수(Variable)
메소드(Method)
상속(Inheritance)
상호작용.인터페이스(Interface)

Motorola new android phone



버라이죤에서 출시된다며 계속 소문이 돌고있는 단말기입니다.

제가 개발자의 입장에서 생각하는 특이사항이라면 화면 레졸루션에 있습니다. 480x854 이라죠. 물론 CPU 도 더 강해지는 것 같고요.

이 단말기를 고려해서인지 새로나온 1.6 SDK 의에뮬에는 AVD 옵션에 기존의 320x480 에 추가하여 480x854의 스킨이 하나 더 들어가 있습니다.

일단 여기저기서 모아본 이 기기의 스펙을 보면 (추정의 수준임)


모델명 Scholes / Droid / Tao
네트워크: ?
CPU: OMAP3430 – 600 MHz ARM Cortex A8 + PowerVR SGX 530 GPU + 430MHz C64x+ DSP + ISP (Image Signal Processor)
메모리: 512MB/256MB ROM/RAM
OS: Android2.0(Eclair)
키보드: QWERTY
스크린: 480x854, 3.7 inch HVGA
카메라: 5.0 megapixel with autofocus and video recorder
배터리: Li-ion 1400 mAh.
기타: 3.5mm audio jack

Thursday, October 1, 2009

HTC Hero (Sprint version)


현재 나와있는 단말기들을 합성해서 비교본을 만들어 봤습니다.


이제 안드로이드가 CDMA 로 넘보기 시작했습니다.
HTC Hero 의 Sprint 버젼이 나오는데 기존의 Hero 와는 약간다르다고 하더군요.

기본적인 하드웨어 사양은 같고, 차이라면
1. 트랙볼사이즈가 왕창 커진거,
2. 배터리 커진거 1350 에서 1500 으로
3. 일설에 의하면 화면밝기가 좀더 좋아졌다기도 하고,
4. Sense UI 가 좀 빨라졌다나요..
등등..

제품사양은
모델명 Hero
네트워크: HSPA/WCDMA (900/2100 MHz, Up to 2 Mbps up-link and 7.2 Mbps down-link speeds), Quad-band GSM/GPRS/EDGE (850/900/1800/1900 MHz)
CPU: Qualcomm® MSM7200A™, 528 MHz
메모리: 512MB ROM, 288MB RAM, 확장
OS: Android 1.5 (Cupcake)
키보드: QWERTY
스크린: 320 x 480, 3.2 inch HVGA
카메라: 5MP AF
배터리: 1500 mAh lithium polymer
기타: 3.5mm audio jack

8월 AdMob 리포트



소스: http://metrics.admob.com/




이번달도 어김없이 리포트가 나오는군요.
이번달의 하이라이트를 보면,

1. 지난 6개월간 아이폰 OS 의 시장점유율은 33% 에서 40% 로 올라갔는데 아시아와 아프리카에서는 아직 점유율이 높지는 않다.
- 이말은 애플이 향후 아시아로 집중적인 마케팅을 할수도 있을 것이라는 말처럼들리기도 하네요. 지금 북미는 55%, 유럽은 45% 정도인데 아시아에서는 12% 이니, 아직 끌어올릴 여지가 많죠.

2.  안드로이드는 미국과 유럽에서 급격히 성장세를 보인다. 두번쨰 안드로이드 폰인 HTC Magic 은 북미과 유럽에서 상위 10대 기종으로 뽑힌다. 전 세계 지역대상 안드로이드로부터의 리퀘스트는 전월대비 17% 높아졌다.

3. 시장점유율이 낮아지고는 있지만, 노키아는 아직 상위 20개 단말기중 12개를 가지고 있다. 그중 가장 강세를 보이는 것이 N975800 XpressMusic 인데 유럽에서 4, 5위를 달리고 있다.

4. 북미에서는 52% 의 스마트폰 사용이 아이폰에 의해 일어나고 있고 다음은 RIM의 14%와 안드로이드의 13% 이다. 팜은 9% 를 기록하였다.
- 마이크로소프트가 6% 로 팜보다도 못하군요.

5. 전세계적으로 리퀘스트의 건수는 전월대비 9% 올랐다.
- 참고로 7월에는 17% 늘었음.