레이블이 java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 java인 게시물을 표시합니다. 모든 게시물 표시

2013년 4월 19일 금요일

클래스, 오브젝트 , 인스턴스



실제 현장에서 사용하는 코딩의 개념과

책에서 정의한 즉 라이브러리에서 정의한 개념은  다르게 사용이 된다고 생각된다.

(왜냐면 정의대로 사용하였을 때 매우 좋지만 가끔 꼼수를 이용해서 정의를 비꼬아 사용하기도 하니깐...)

하지만 정의는 매우 중요하다고 생각한다.

왜???


정의는 그 언어를 사용할 때 필요한 개념이니깐!

웹 개발이든, 응용개발이든 개발개발 하게 코딩하는 것 보다

개념에 맞게 설계를 해야 나중에 뒷탈도 없이 확장코딩하는게 좋으니깐 ,


이 게시물은 개념에 대해 정확하게 설명해 놓지 않는다.


그럴려면 작성 시간이 필요한데... 요즘 너무 ㅠㅠ 피곤하다.

일단 적어놓고 다시 시간내서 보기 좋게 작성하기로 한다. (아마 이번주 안에..)


가정 :

클래스 : A
오브젝트  : ☆
인스턴스  : ☆'s

개념에 생각 정리 :

'A'의 클래스는 실제 메모리에 적재되지 않은 상태로 클래스 메서드(행위) 실행으로 '☆'이라는 결과 값을 만들어주는 틀이며,

'☆'는 'A' 클래스의 오브젝트로써 'A' 클래스를 할당하면서 얻는 값으로 실제 메모리에 적재가 된다. 즉  '☆'는 클래스로 부터 나오는 결과값이다.

그럼과 동시에 '☆'는 'A'의 클래스에서 생성되는 인스턴스 중 하나로,

A클래스가 여러번 오브젝트 되었을 때 A 클래스의 여러개의 instance가 생성이 된다.




2013년 1월 18일 금요일

JAVA를 위한 첫 걸음




제목의 단어를 잘 정해서 쓴건지는 모르겠지만..


JAVA 개발에서 필요한 것들 단어를 나열해 보았다. 

아래에 단어들 중에 빠진것들이 있다면, 나중에 수정해서 넣겠지..


JSTL , Spring FrameworkStruts2Spring MVCHibernate, IBATIS


Frameworker , Sitemesh

2012년 12월 10일 월요일

AWT, Swing 에 관하여





AWT의 레이아웃에 관하여..

레이아웃 매니저와 기본적인 코드들을 익히구 WindowBuilder 플러그인을 설치해서 사용한다.

이클립스에서 Help -> Instla New Software .. -> Work With 에 

Juno - http://download.eclipse.org/releases/juno를 선택하고
-> General Purpose Tools 하위에 있는 Swing Designer 를 체크한 후 설치하면 WindowBuilder가 설치된다.






Swing..

Look And Feel 을 사용하면 됩니다. http://docs.xrath.com/java/se/6/docs/ko/api/javax/swing/LookAndFeel.html






--->

그러나 무엇보다도


'과연 Swing에서 제공해 주는 기본적인 UI로 제대로 된 프로그램을 만들 수 있는 것인가'에 앞서

꼭 Swing 로 만들어야 하는가 부터 생각하는게 맞는거 아닌가 싶다.

UI 에 중점을 둬야하는건 거의 일반 윈도우 사용자 대상으로 한 프로그램이고

그럴경우 그냥 ms 제품으로 만드는게 좋을듯.

당연하게도 윈도우 유저 대상의 제품엔 swing은 거의 없는듯. (몰라 몰라.)












2012년 9월 11일 화요일

깜빡 하는 용어들.


자주 사용하는 용어 중 가끔 뜻 모르게 말하는 용어들이 있다.

다시 한번 머리 속에 각인 시키기 위해 블로그에 적어 놓기로 한다.

#. 인터페이스(Interface)와 API


인터페이스라는 용어는 복수의 의미를 가진다. 일반적으로 '어떤 클래스의 인터페이스' 라고

하면, 클래스가 가지고 있는 어떤 메소드의 집합을 의미한다.

이 클래스에 대해서 조작 또는 처리를 실행할 때는 클래스가 가지고 있는 메소드를 통해

실행한다.

이게 일반적 API(application programming interface) 의 의미이고,

Java에서는 '키워드 interface를 사용해서 선언된 것'도 인터페이스라고 한다.

이 두가지 인터페이스라는 용어의 의미는 비슷하지만, 문장 안에서 용어를 사용할 때

아리송 아리송 하다.. @_@);;


#. 패턴과 클래스


"패턴"이라는 용어는 디자인 패턴의 의미로 사용한다.


"클래스"는 Java에서 말하는 클래스이고 키워드 class를 사용해서 프로그램에서 정의된 것

을 말한다.


#. 오버라이딩(Overriding)와 오버로딩(Overloading)


오버라이딩(재정의)와 오버로딩(다중정의)에 대해 다시한번 정의해보쟈! ㅋㅋ 매번까먹어.


오버라이딩'메서드 재정의'라고도 불리며 클래스간 상속 관계에서 메서드를 재 정의 하는 기법이다! 두 클래스가 상속 관계에 있으면 부모 클래스의 public , protected 으로 선언된 메서드는 자식 클래스로 그대로 상속되어 자식 클래스에서 사용 할 수 있다. 

즉 이미 정의된 메서드를 재 사용하게 할 수 있는거다. (재활용 재활용 .ㅋㅋ)
그러니깐, 단순히 재 사용을 하지 않고 자식 클래스에서 상속 받은 메서드를 재 정의하여
다른 연산을 수행하도록 하는것이다!!!
Super클래스의 메소드보다 sub클래스의 메서드 접근제한이 동일하거나 더 넓어야한다. 

예를 들어, protected 라면 protected /public이다.
기본적으로 리턴형은 같아야하며 super클래스의 메서드명과 sub클래스의 메서드명이 같아야 한다. 그리고 인자(타입,개수)는 반드시 같아야 한다.


일반적으로 하나의 클래스 안에 정의된 메서드들의 이름은 중복될 수 없다. ('_ ')a 

오버로딩(다중정의)는 하나의 클래스 내에서 같은 이름을 가지는 메서드(멤버함수)가 여러개 정의 될 수 있다. (이름만 같은 쌍둥이들 ㅋㅋㅋ). 
이것은 컴파일 할 때 컴파일러에 의해 각 메서드들이 구별되며 기준은 인자가 된다. 
그러니깐,
메서드의 이름은 같되 매개변수의 정보는 달라야한다!!!. (얘들은 쌍둥이지만, 유전자는 다르다규!)
메서드의 이름과 입력 매개변수의 정보(개수 및 타입)를 메서드의 시그너처라 함.
(메서드 시그너처(Signature): 메서드 이름 + 매개변수 정보(개수 및 타입 정보))
메서드의 시그너처를 유일하게 한다면 메서드의 이름은 얼마든지 같을 수 있다! 
오버로딩의 목적은 일관된 작업이며 그것으로 프로그램의 신뢰가 높아지기 마련이다.

특정클래스로 접근제한은 상관이 없다. 물론 리턴형에도 상관이 없다. 다만, 메서드명과 인자(타입,개수)는 반드시 달라야 한다.


근데, 왜 오버로딩을 사용하는걸까?

동일하거나 유사한 일을 수행하는 메서드가, 전달 받는 매개변수에 따라 조금씩 다른 연산을 해야 하는 경우에 
모든 상황에 따라 메서드 이름을 각각 정의 하는 것보다 매개변수 정보만 달리하여 동일한 이름으로 정의한다면 코드를 작성하는 입장에서나 사용하는 입장에서 직관적이고 편리하게 사용할 수 있어서..사용하는 거겠지.뭐.으하하





[ Post List ]