[정보처리기사/예상문제] - 2023 정보처리기사 실기 예상 문제 모음

JAVA 기출문제 모음

비전공자용 Java 요약 1탄

비전공자용 JAVA 요약 2탄(객체지향, 클래스)

비전공자용 JAVA 요약 3탄(객체 생성, 생성자, 접근제어자)

비전공자용 JAVA 요약 4탄(this, 배열, 상속, super)


목차

1. 객체지향 프로그래밍

2. 클래스

3. 메서드

4. 자바의 메모리 구조와 변수


1. 객체지향 프로그래밍

자바는 객체지향 언어라고 많이들 들어는 봤을 것이다.

객치지향이라고 하면 절차지향과 대조되는데 절차지향의 대표적인 언어가 C언어이고 객체지향의 대표적인 언어가 Java이다

절차지향은 말 그대로 순서대로 읽어야하는 것이고 객체지향은 그와 반대되는 개념이라 생각하면 된다. 

순서가 절차적으로 진행되는 것이 아니라 그때 그때 필요한 것이 실행되는 것이다.

대충만 생각해봐도 객체지향이 뭔가 더 효율적인 느낌이다

a부터 z까지 진열된 책장이 있다고 생각해보자.

절차지향은 dragon이라는 책을 찾기 위해서 a부터 절차적으로 찾아야한다.

반면에 객체지향은 dragon이라는 책을 바로 검색해서 찾는다.

완벽하진 않지만 대충 생각하면 이렇다.

대충 알았으니 이제 객체지향에 대해 더 알아보자.

우선 객체란 뭘까?

 

1) 객체란?

물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것이다.

사람, 자동차, 건물 등의 눈에 보이는 사물은 모두 객체라고 할 수 있으며 눈에 안보이는 주문, 생산, 관리 등 어떤 행동을 나타내는 단어도 객체가 될 수 있다.

출처 : [자바, Java] 객체(Obejct)란? (tistory.com)

 

 

2) 객체지향 프로그래밍

각 요소들을 객체(Object)로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법이다.
쉽게 생각해서 컴퓨터로 예를 들면 컴퓨터의 모든 부품을 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것이라고 볼 수 있다. 

"학생이 밥을 먹는다"라는 예문을 생각해보자.
학생이라는 객체와 밥이라는 객체가 협력해서 문장이 구현이 된다.
객체 지향 프로그래밍도 마찬가지로 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할 것인지 생각해야한다. 

출처 : Do it! 자바 프로그래밍 입문-박은종


2. 클래스

앞서 1탄에서 자바 프로그램은 클래스 단위이기 때문에 자바 프로그램을 만드는 것은 자바 클래스를 만드는 것과 같다고 하였다. 그렇다면 클래스는 뭘까

클래스는 공통된 연산을 갖는 객체의 집합이다

C언어에서 구조체랑 비슷하다.

C언어에서 구조체는 여러가지 자료형을 한번에 관리하기 위해 사용한 것이라면 Java에서 클래스는 여러가지 자료형과 함수(자바에서는 메서드라고 부름)를 한번에 관리하기 위해서 사용한다.

 

간단하게 예를 들어 생각해보자.10이라는 자료를 변수로 저장하고 싶다면 자료형을 뭘로 해야할까?int형 같은 정수형 자료형을 사용하면 될 것이다.그렇다면 책이라는 것을 변수로 저장하려면 자료형을 뭘로 해야할까?그럴때 나오는 개념이 바로 클래스이다.

 

책이라는 객체안에는 제목, 가격, 출판사, 저자등의 다양한 자료들이 들어가 있다. 

자바에서는 아래와 같이 클래스라는 녀석을 이용해서 서로 다른 자료형들과 함수(자바에서는 메서드)를 한꺼번에 담는다.

public class Book{
 public String title;
 public int price;
 public String company;
 public String author;
}

위의 예시에서 title, price, company, author같이 클래스안에 들어있는 변수를 필드 또는 멤버변수 또는 객체변수 또는 속성 또는 인스턴스 변수라고 한다

 

<Book>

String title int price String company String author

위와 같은 느낌으로 생성된다.


3. 메서드

클래스에 포함되는 함수를 메서드라고 한다

일단 함수는 C언어에서도 봤었다.

형태는 거의 동일하다

 

아래 예시에서 

int는 반환값

add는 메서드 이름

int a, int b는 매개변수이다.

int add(int a,int b) {
  return a+b;
}

4. 자바의 메모리 구조와 변수

 

아래 예문의 출력 결과를 예상해보자.

package test;

public class Test {

	public static void main(String[] args) {
		int a=3;
		System.out.println(hello(a));
		System.out.println(a);
	

	}
	public static int hello(int a) {
		a=7;
		return a;
	}
}

C언어때의 예문과 거의 동일하다

 

혹시나 뭔소리인지 모르겠다면 아래 링크에 설명을 보고오는 것이 좋다.

2023 정보처리기사 실기-비전공자용 C언어 요약 3탄(함수, 포인터) :: 잡코딩 정보 블로그 (tistory.com)

 

메서드를 호출함으로써 a의 값이 변경된 줄 알았는데 System.out.println(a)를 보니 a의 값이 바뀌지 않았다. 그 이유는 main메서드의 변수 a와 hello()메서드의 변수 a는 다른 a이기 때문이다. 즉 각기 다른 지역의 지역변수이다.

 

이제 자바의 메모리 구조를 알아보자.

자바에서는 자바 가상 머신(JVM)이라는 녀석이 있는데 이 녀석은 자바 프로그램 실행 환경을 만들어 주는 소프트웨어 이다. 자바 코드를 컴파일하여 자바 가상 머신 환경에서 실행되게 만들어준다.

이 때 컴파일은 0과 1밖에 이해못하는 컴퓨터를 이해시키기 위해 개발자가 만든 소스코드를 기계어로 바꿔주는 작업을 말한다.

JVM이라는 녀석이 위와 같은 예문일 경우 Test라는 이름의 클래스를 찾는다.

그 다음 static 예약어가 붙은 메서드를 메모리에 로딩한다.

C언어에서 배웠다시피 static이 붙으면 지역변수처럼 중간에 소멸되지 않고 프로그램이 종료될 때 까지  계속 메모리에 남아 있다.

 

프로그램이 실행되기 전 Method 영역에 main 메서드와 hello 메서드가 메모리에 로딩되며 제일 우선적으로 main메서드가 호출되면 호출된 정보가 stack 영역으로 들어가서 프로그램이 시작된다.

 

위 예문에서는 hello라는 메서드에 static 예약어가 붙어있기 때문에 main메서드에서 hello 메서드를 사용할 수 있는 것이다

 

아무튼 static이 있으니 프로그램 시작전에 메모리에 로딩돼있고 main부터 실행된다는 것만 알면 된다


[정보처리기사/예상문제] - 2023 정보처리기사 실기 예상 문제 모음

JAVA 기출문제 모음

비전공자용 Java 요약 1탄

비전공자용 JAVA 요약 2탄(객체지향, 클래스)

비전공자용 JAVA 요약 3탄(객체 생성, 생성자, 접근제어자)

비전공자용 JAVA 요약 4탄(this, 배열, 상속, super)

 

+ Recent posts