'프로그래밍 개념/JAVA'에 해당되는 글 3건

많은 소프트웨어 개발자들과 객체지향에 대해 얘기를 하다보면 객체와 클래스를 혼용해서 언급하는 경우를 자주 보게 됩니다. 참으로 당황스럽기도 하고 안타까운 현실이지만 객체와 클래스 사이의 끈적끈적한 이해관계를 생각해보면 동일한 개념으로 설명하는것 또한 충분히 이해가 가긴합니다. 이렇게 말하는 저 역시 설명하기 귀찮다는 단 하나의 이유때문에 객체는 클래스다 라고 말한적인 있으니깐요..^^

"객체를 클래스로 표현하니깐 객체와 클래스는 동일한 개념 아닌가요? 많은 사람들이 그렇게 생각하고 말하고 있던데..???"
만약 누군가가 여러분께 이런 질문을 했다면 어떻게 하시겠어요?

"어..그게 말이지..클래스는 객체를 추상화 한거고 ... 객체는 클래스의 실체 즉 .............." 
"야..객체는 객체고 클래스는 클래스지 어떻게 객체랑 클래스가 같은 개념이냐? 너 공부 안할래? " ^^
이정도 아닐까요? ㅋㅋ


객체나 클래스를 간단한 정의 하나로 구분 할 수 있다면 좋겠지만 개발자의 업보가 그렇듯 그리 간단하게 설명되지 않습니다.
단지 제가 설명 드리고자 하는것은 아주 아주 기본적인 차이만 설명 해 드리고 좀더 깊은 이해관계는 오로지 경험에서 얻을수 있다는 무책임한 말을 하고 싶을뿐입니다.. ^^

그럼 객체란 무엇인가? 담배를 가지고 얘기 해 볼까요? ^^


1. 객체란 놈은 실제로 존재하는 구체적인 대상 또는 시스템 입니다.


2. 객체는 다른 객체와 구분되며 유일합니다.


3. 객체는 상태( Attribute )과 행위( Method )를 가집니다.


그럼 클래스는 무엇인가?

동일한 유형을 가진 객체들의 표현하는 추상적인 모습입니다.


이렇게 보면 객체랑 클래스 완전 다릅니다. 근데 왜 헷갈려 할까요?
만약 표현하려는 객체가 세상에 단 하나 밖에 존재 하지 않을때 즉, 하나의 객체를 위해 하나의 클래스를 만들어야 할때.. 아리 까리한 개념을 가지고 계신다면 "객체는 클래스다" 라는 말이 나오지 않을까요??

세상에 하나 밖에 없는 객체가 어디 있냐구요??
여러분이 개발하는 대부분의 프로그램들이 세상에서 유일한 객체들의 행동(Method)아닐까요?
만약 여러분이 아침 6시가 되면 PC의 C디렉토리를 검색해서 어떤 파일을 D 디렉토리로 옮기는 프로그램을 개발한다고 생각해 보세요.. 6시에 C디렉토리에 있는 어떤 파일을 D로 옮기는 행동(Method)을 하는 객체는 여러분이 개발해야 하는 세상에 유일한 객체의 행동(Method)입니다. 
이런 유일한 하나의 객체를 추상화하여 유일한 하나의 클래스를 만들다보면 객체가 클래스인것 처럼 생각될때가 종종 있습니다만..절대 안됩니다..-.-;

요약 하자면..
추상적인 개념인 클래스로 부터 실체인 객체를 생성하는 과정을 인스턴스화( Instantiation )이라고 하고 인스턴스화 과정에서 생성된 실체 객체를 인스턴스( Instance )라고 합니다.

즉 객체는 클래스의 인스턴스이고, 클래스는 실 객체를 생성할 추상적인 틀인것입니다.


도움이 되었으면 좋으련만.......


원문 출처: http://egloos.zum.com/tory45/v/4965787#type=comment&page=1



끝으로 생활코딩 JAVA편 중.. 객체 = 변수와 메소드의 집합

'프로그래밍 개념 > JAVA' 카테고리의 다른 글

자바의 개념들  (0) 2016.11.16
메소드 오버로딩(Method Overloading)  (0) 2016.11.14
블로그 이미지

Cyberworld

Everything is connected, connection is power.

,
멤버 변수 : 클래스 영역에 정의된 변수

인스턴스 멤버 변수 : 멤버 변수 중 static이 앞에 오지 않는 멤버 변수.


스태틱 멤버 변수 : 멤버 변수 중 static이 앞에 오는 멤버 변수.



자바는 선언된 위치에 따라 지역 변수와 전역 변수로 나누어 지는데..


지역 변수 == 로컬 변수 : 특정한 지역 안에 { } 생성되어 그 지역 안에서만 사용할 수 있는 변수.  자바의 경우 메소드 안에서 만들어지고 쓰인다.


전역 변수 == 멤버 변수 : 어디서나 쓸 수 있는 변수를 말한다. 자바의 경우 클래스 안에서 만들어지고 쓰이는 변수이다.

블로그 이미지

Cyberworld

Everything is connected, connection is power.

,

메소드 오버로딩이란 하나의 클래스 안에 같은 이름의 메소드를 여러 개 정의할 수 있는 기능을 의미한다. 단 조건이 있다. 


메소드의 파라미터의 타입 또는 개수가 달라야 한다.


아래의 예제는

파라미터의 타입이 int와 String이므로 메소드 오버로딩이 성립된다.

void printInfo(int x);

void printInfo(String x);


아래의 예제는

파라미터의 타입은 같지만 개수가 다르므로 메소드 오버로딩이 성립된다.

void printInfo(int x);

void printInfo(int y);

void printInfo(int x, int y);


아래의 예제는

파라미터의 타입이 String으로 둘다 같으므로 메소드 오버로딩이 성립되지 않는다.

void printInfo(String x);

void printInfo(String name);


아래의 예제는

파라미터의 타입과 개수가 같으므로 메소드 오버로딩이 성립되지 않는다.

리턴 타입은 오버로딩 성립에 영향을 주지 않는다.

void printInfo(String name);

int printInfo(String name);



'프로그래밍 개념 > JAVA' 카테고리의 다른 글

(펌) Object(객체)와 Class 도데체 뭐란 말이냐??  (0) 2016.11.26
자바의 개념들  (0) 2016.11.16
블로그 이미지

Cyberworld

Everything is connected, connection is power.

,