728x90
반응형
728x90
반응형

자바의 특징인 객체지향프로그래밍(OOP : Oriented Object Programming)의 특성에는

캡슐화(Encapsulation), 상속성(Inheritance), 다형성(Polymorphism)이 있습니다.


1) 캡슐화  

 -데이터와 데이터를 다루는 방법(조작)을 묶는 것입니다.

 -클래스 내부 정의에 대해 외부에서 볼 수 없는 것이 특징입니다.

  클래스의 접근 권한을 결정하는 접근 지정자를 사용하여 구현합니다.

  접근 지정자에는 (public > protected > default > private ) 접근 허용 순입니다.

 -캡슐화의 예를 들자면 알약은 캡슐로 되어있기에 약의 내용물을 알 수 없습니다.


2) 상속성 

 -하나의 클래스(부모 클래스)가 갖는 특징(데이터+ 조작)들을 다른 클래스(자식 클래스)가 물려받는 것입니다.

 -상위 클래스에서 정의한 속성을 재사용하여 개발 속도를 높이기 위해 만들었습니다.

 -상속을 이용하면 하위 클래스는 상위 클래스의 모든 연산과 메소드를 자신의 클래스에 다시 정의하지 않고도

  자신만의 메소드로 구현가능합니다.


3) 다형성 

 -상속성의 계층을 따라 각각의 클래스에 동일한 이름의 메소드를 사용할 수 있는 것입니다.

 -하나의 인터페이스를 이용하여 다양한 구현을 제공하여 개발의 효율성을 높입니다.


Human human;
human = new Singer();
human.eat();

human = new Programmer();
human.eat();

human = new Dancer();
human.eat();

-사람의 직업은 다양하지만 모든 사람은 먹는 행동을 하기에 동일한 eat()메소드를 사용할 수 있다는 뜻입니다.

728x90
반응형
728x90
반응형

오늘은 오버로딩과 오버라이딩의 차이점을 알아보도록 하겠습니다.

면접 질문에서 자주 나오는 유형의 질문이라고 하는데요.

자바의 다형성 특징을 나타내는 방법으로 오버로딩오버라이딩이 있습니다.


오버로딩 : 같은 이름의 메소드를 여러 개 가지면서 매개 변수를 다르게 정의하는 것

오버라이딩 : 상위 클래스(부모 클래스)가 갖고 있는 메소드(자식 클래스)를 하위 클래스에서 재정의해 사용하는 것


오버로딩(Overloading)에 대해 자세히 알아 보겠습니다.

-메소드 이름은 같다.

-오버로딩은 매개 변수 타입, 매개변수가 다르다.



오버로딩은 실제로 프로젝트를 진행하면 여러 개발자 분들과 같이 개발하기 때문에 오버로딩을

사용해 작성자와 사용자가 알아보기 쉽게 하여 개발의 효율성을 높이기 위해 사용합니다.


예제를 통해 알아보겠습니다.

class OverloadingTestClass{ void overloadingTest(){ System.out.println("매개변수가 없는 메소드"); } void overloadingTest(int a){ System.out.println("매개변수가 "+a+"인 메소드"); } void overloadingTest(int a, int b){ System.out.println("매개변수가 "+a+"와 "+b+"인 메소드"); } } public class OverloadingTestMain { public static void main(String[] args) { OverloadingTestClass oltc = new OverloadingTestClass(); oltc.overloadingTest(); oltc.overloadingTest(100); oltc.overloadingTest(100, 200); } }


결과는 다음과 같습니다.



사전과 비교하자면 끄다라는 단어가 있습니다. 끄다라는 단어를 통해 스위치를 끄다, 불을 끄다, 담배를 끄다

등 표현을 할 수 있는데요. 만약 끄다라는 단어를 정의하지 않았다면 위에 표현을 일일이 정의해야 하는 번거로움이

있습니다. 우리나라 사전이 지금도 두껍지만 두께의 양은 수 십 배로 많아 질 것입니다. 

조금이나마 이해가 되셨기를 바랍니다.ㅎㅎ


다음은 오버라이딩(Overriding)에 대해 자세히 알아 보겠습니다.

먼저 오버라이딩을 알기위해 상속이라는 개념을 알아야 하는데요.

상속이라는 의미는 부모님이 자식에서 재산을 상속하듯이 무언가를 물려준다는 뜻인데요.

프로그래밍에서도 의미가 비슷합니다.

-상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술입니다.

-메소드 이름은 같다.

-오버라이딩은 매개 변수 타입과 매개변수가 같다.


예제를 통해 알아보겠습니다.

class Employee{
	String name;
	int age;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는"+age+"입니다.");
	}
}
class Manager extends Employee{
	String jobId;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는 "+age+"입니다.");
		System.out.println("그의 직업은 "+jobId+"입니다.");
	}
}

public class OverridingTestMain {
	public static void main(String[] args) {
		Manager shin = new Manager();
		shin.name="신자바";
		shin.age=27;
		shin.jobId ="웹 프로그래머";
		
		shin.overridingTest();
	}
}

결과는 다음과 같습니다.



Manager클래스에 employee클래스를 상속함으로써 name과 age변수를 따로 정의하지 않아도 객체 생성 후에

 값을 입력하는 데 문제가 없음을 확인할 수 있습니다.

overridingTest() 메소드를 실행하면 콘솔 창에 잘 출력됨을 확인할 수 있습니다.






728x90
반응형
728x90
반응형

개발자 분들이 사용하시면 아주 유용한 정보를 알려드릴까해요

바로 이클립스에서 코드 전체 찾기인데요. 

즉 ctrl + f 기능을 이클립스에서 하나의 파일이 아닌 전체 파일의 코드를 찾을 수 있는 거죠.

바로 보여드릴께요!


이클립스 실행하시고 진행하시는 프로젝트를 켜줍니다.

ctrl + h 를 눌러 search를 켜줍니다.



다음은 customize 버튼을 클릭해줍니다.

아래와 같은 화면이 뜬다면 file search를 제외한 나머지는 체크를 해제해주세요.



ok버튼을 누르시면 아래와 같은 화면이 나옵니다.

마지막으로 찾고자 하는 코드를 ctrl + f 기능을 찾는 것처럼

containing text에 코드를 써줍니다. 저는 controller를 찾기 위해 입력을 했습니다.

다음으로 *.java를 입력해줬는데요 *.확장자를 이용해 찾고자 하는 코드의 범위를 지정해줍니다.

아래의 과정을 완료 하셨다면 search를 눌러줍니다.



search를 눌러주시면 아래의 사진과 같이 controller를 포함하고 있는 모든 java파일을

찾아주는 것을 확인할 수 있네요. 

ctrl + f 기능을 전체코드로 확인할 수 있다고 하면 맞을 것 같네요.




*.java 파일 이외의 *.jsp, *.xml, *.html 등 모두 가능하니까 다들 확인해보세요~

이만 포스팅을 마치겠습니다.







728x90
반응형
728x90
반응형

먼저 위키피디아의 사전적 정의부터 살펴보도록 합시다.

범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다.


네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해서는 각각의 고유한 이름이 필요하다. 이 이름은 고유성(유일성)이 매우 중요하다. 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. 고유성을 완벽하게 보장하려면 중앙관리시스템이 있어서 일련번호를 부여해 주면 간단하지만 동시다발적이고 독립적으로 개발되고 있는 시스템들의 경우 중앙관리시스템은 불가능하다. 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용 상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.


즉 객체마다 구별을 짓기 위해 UUID를 사용한다고 보면 될 것 같아요!

16진수로 표현되며 340,282,366,920,938,463,463,374,607,431,768,211,456개가 사용이 가능하다고 하네요.

중복될 일은 거의 없다고 보시면 됩니다.

UUID를 사용해보도록 하겠습니다.

사용하는 코드는 간단합니다.

import java.util.UUID;

public class testUUID {
	public static void main(String[] args) {

		// TODO Auto-generated method stub
		for(int i=0; i<10; i++){
			System.out.println(i+"번째 UUID : "+UUID.randomUUID().toString());

		}

	}
}



실행 결과를 확인하면 아래와 같이 값이 출력됩니다.



JDK 1.5버전 이상부터 가능한 클래스라고 합니다. 

UUID의 사용 예를 들자면 

학교에는 학생의 학번이 있고 웹 사이트에는 회원의 회원번호가

회사에는 사원의 사원번호가 있듯이 중복되지 않는 값을 줘야 할 때 사용하면 좋을 것 같네요!


728x90
반응형
728x90
반응형

프로젝트를 새로 시작하거나 공부를 새로 하실 때 이클립스가 느려지거나 지저분함을 막기 위해

workspace를 만들곤 하는데요.

더 이상 필요 없는 workspace파일을 지워도 workspace목록은 여전히 남아있죠.

저는 지저분한 게 싫어서 바로바로 정리하는 편이라 저 같은 분들에게 유용할 것 같은데요.



저는 삭제하기 위해 test라는 workspace를 하나 만들어줬습니다.


1. 먼저 각자 저장된 이클립스 폴더로 들어갑니다. 폴더 안에 configuration폴더로 이동합니다


2. .settings폴더로 이동합니다.



3. .settings폴더 안에 있는 파일들 중 org.eclipse.ui.ide.prefs파일을 메모장 또는 텍스트 에디터로 열어줍니다.


4. org.eclipse.ui.ide.prefs파일 안에서 rececnt_workspaces= 에서 자신이 지우고 싶어하는 workspace를 지워줍니다.

경로 구분은 ( \n으로 되어있습니다. )




5. 삭제 완료


확인을 위해 이클립스를 실행하면 삭제가 잘되어있네요.








728x90
반응형
728x90
반응형

+ Recent posts