거누의 개발노트

Java 용어 정리 - 개발자 기술면접(1) [개발노트] 본문

용어

Java 용어 정리 - 개발자 기술면접(1) [개발노트]

Gogozzi 2020. 12. 24. 16:43
반응형

👉 Java는 객체지향 프로그래밍 언어이다.

 

👉 객체란?

물리적으로 존재하거나, 추상적인 것 중에서 자신의 속성과 동작을 가지는 모든 것을 말한다.

쉽게 말해 아래에서 설명하겠지만, 로봇을 만들때 로봇의 팔, 다리, 머리 이러한 것들이 객체가 될 수 있다.

 

👉 객체지향 프로그래밍이란?

OOP라고 하며 Object-Oriented Programming의 약자

데이터를 객체로 취급하여 프로그램에 반영한 것으로
순차적으로 프로그램이 동작하는 기존 프로그래밍 언어와 다르게
객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.

쉽게 말해 로봇을 만드는데 로봇의 부품들 머리, 다리, 팔 등을 조립해 만든다.
위 와같은 방식으로 프로그램을 만들때 부품들 즉 객체들을 만들고 조립해서 만드는 방식이 객체지향 프로그래밍인 것이다.

 

👉 다형성?

같은 자료형에서 여러 가지 객체를 대입하여 다양한 결과를 얻어내는 성질을 의미한다.

쉽게 말해 하나의 메소드 또는 클래스가 있을 때 이러한 것들이 한가지 방법이 아니라 다양한 방법으로 동작하는 것을 의미한다.

다형성으로 구현해야하는 이유?
- 코드양이 줄어든다.
- 적은 결합도로 코딩이 가능 => 재사용성이 높아진다. 

 

👉 오버로딩(Overloading)?

다형성을 지원하는 방법으로 오버로딩과 오버라이딩이 있다.

오버로딩은 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수를 다르도록 하는 기술이다.

실제로 오버로딩을 이용해서 코드를 작성해보자.

 

 ● 메소드 선언 

package com.fnc;

public class Overloading {
	
	
	//매개변수 없음
	public void overLoadingFnc() {
		System.out.println("매개변수 없을 때");
	}
	
	//매개변수 1개	
	public void overLoadingFnc(String a) {
		System.out.println("1개일 때 : " + a);
	}
	
	//매개변수 2개	
	public void overLoadingFnc(String a, String b) {
		System.out.println("2개일 때 : " + a+b);
	}
}

 

 ● 메소드 호출

package com.fnc;

public class Main {

	public static void main(String[] args) {
		
		Overloading ol = new Overloading();
		
		//함수 호출(매개변수 없음)
		ol.overLoadingFnc();
		
		//함수 호출(매개변수 1개)
		ol.overLoadingFnc("안녕");
		
		//함수 호출(매개변수 2개)
		ol.overLoadingFnc("안녕","하세요.");
		
	}

}

 

 ● 결과

매개변수 없을 때
1개일 때 : 안녕
2개일 때 : 안녕하세요.

※ 위와 같이 하나의 메소드명으로 다양한 방법으로 메소드가 동작하는 것을 오버로딩이라고 한다.

👉 클래스(Class)?

클래스는 어떠한 객체의 변수, 메소드의 집한이다.

우리가 코드를 작성 할 때에는 확장자 .java 라는 곳에서 우리가 알고있는 프로그래밍 언어로 작성한다.
이렇게 작성된 것을 컴파일러가 컴퓨터가 알수있는 언어(기계어)로 변환해주는데 변환된 파일은 .class 확장자가 된다.

결국 클래스는 우리가 작성한 코드들에 집합이 되는 샘이다.

* 패키지(package)는 내가 작성한 코드들 .java 파일들을 관리하기 쉽게 폴더안에 넣는것 처럼 정리하는데 이러한 폴더를 패키지라고한다.

하나를 알게되면 또하나의 모르는 단어가 생기는것 같다.

👉 컴파일러?

클래스설명 할 때 설명했듯이 프로그래밍 언어로 작성된 것을 기계어로 변환해주는 프로그램이다.

 

오버라이딩을 배우기 앞서 상속이라는 개념을 알고가자.

👉 상속(Inheritance)?

상속은 우리가 생각하는 상속과 같은 개념이다.
부모가 되는 클래스를 자식클래스가 물려받는 개념으로 필드(변수), 메소드를 물려받는다.

 

👉 오버라이딩(Overriding)?

상위 클래스가 가지고 있는 변수가 하위 클래스로 상속되는 것처럼
상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위클래스에서 사용할 수 있다.

하지만, 하위 클래스에서 메소드를 재정의해서 사용할 수 있는데 이러한 기술을 오버라이딩 이라고 한다.

실제 코드로 작성해보면...

 

부모클래스

package com.fnc;

public class BooMo {
	
	public String name;
	public String gender;
	
	
	public void printBooMo() {
		System.out.println("부모님의 성함은 " + this.name + "이고, 성별은 " + this.gender + "입니다.");
	}
	
}

 

● 자식클래스

package com.fnc;

public class JaSick extends BooMo{
	
	int age;
	
	public void printBooMo() {
		
		if(this.gender.equals("남성")) {
			System.out.println("아버지의 성함은 " + this.name + " 이고, 성별은 " + this.gender + " 이고, 나이는 " + this.age + " 입니다.");
		}else {
			System.out.println("어머니의 성함은 " + this.name + " 이고, 성별은 " + this.gender + " 이고, 나이는 " + this.age + " 입니다.");
		}
		
	}
	
}

 

● 호출

package com.fnc;

public class Main {

	public static void main(String[] args) {
		
		JaSick js = new JaSick();
		
		
		js.age = 50;
		js.gender = "남성";
		js.name = "OOO";
		
		js.printBooMo();
		
	}

}

 

● 결과

아버지의 성함은 OOO 이고, 성별은 남성 이고, 나이는 50 입니다.

※ 위와 같이 자식 클래스에서 메소드를 재정의 해서 사용하는 것을 오버라이딩 이라고한다.

 

👉 JVM(Java Virtual Machine)?

JVM은 자바 가상머신의 약자이다.

자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 JVM이 이것을 해석하고 실행할 수있는 소프트웨어이다.


결론적으로는 자바프로그램을 중계하는 역할을 해서 운영체제에 동일한 실행 결과가 나오게 하는 역할을 한다.

 

👉 JRE(Java Runtime Environment)?

JRE는 자바 실행환경의 약자이다.

JRE는 JVN이 자바 프로그램을 동작시킬 때 필요한 라이브러리와 파일들을 가지고 있다.
또한, JVM의 실행환경을 구성하고 있다고 보면 된다.
결론적으로는 JRE안에 JVM이 포함되어있다.

 

👉 JDK(Java Development Kit)?

JDK는 자바 개발도구의 약자이다.

JDK안에 포함되어있는것은 JRE, 개발을 위한 도구(컴파일러 등)이다.
Java 프로그램을 개발하기 위해 필요한 도구이다.

* JDK[ JRE( JVM, 라이브러리, 기타 파일 ), 개발도구 ]

 

👉 JDBC(Java Data Base Connectivity)?

약자 그대로 데이터베이스에 접속하거나, SQL문장 실행, 실행결과로 얻은 데이터 핸들링을 제공한다.

데이터베이스와 관련된 작업을 처리할 수 있도록 도와주는 일을 하는 것이다.

DBMS에 의존하지 않고 Java Application으로부터 사용하는 독립적 환경을 제공한다.

 

👉 DBMS(DataBase Management System)?

데이터베이스 관리 시스템의 약자이다.

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성, 관리 해주는 소프트웨어이다.

DBMS의 종류를 나열하면 쉽게 이해할 수 있다.
=> Oracle, MySQL, MSSQL, MariaDB, Tibero

 

2편에서 계속...

썸네일

 

반응형
Comments