본문 바로가기
국비 과정/Java

국비 - 0713 (가변배열 , 객체지향 , 절차지향)

by 코딩호야 2022. 7. 13.

가변배열

: 가변 배열이란 다차원 배열에서 열 또는 면의 갯수가 가변적인것을 뜻합니다. C , C++ 가 고정적인 배열만을 

선언할 수 있는 것에 반하여 자바는 가변배열을 선언할수 있습니다.자바에서 가변 배열을 사용하는 이유는 배열을 참조형으로 처리하기 때문입니다.

 

자바는 다차원 배열을 처리하기 위하여 배열의 객체를 이용하기 때문에 복잡한 과정을 거칩니다.

2차원 배열은 1차원 배열이 여러개 모여있는것으로 취급하고 3차원 배열은 2차원 배열이 여러개 있는것으로 취급합니다.

결국 2차원 배열은 배열의 배열입니다.

 

final 변수는 상수선언  (변수는 대문자로 써야한다.)

Ex ] final int SIZE = 6 ;

 

 

객체지향과 절차지향

절차지향이란 : 물이 위에서 아래로 흐르는것처럼 순차적인 처리

중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍기법

대표언어 = C언어

 

장점 :  컴퓨터의 처리구조와 유사해 실행속도가 빠르다.

 

단점 :    1. 유지보수가 어렵다.

             2. 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움

             3. 디버깅이 어렵다.

 

객체 지향이란: 프로그래밍에서 필요한 데이터를 추상화시켜서 상태와

행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 

구성하는 프로그래밍 방법이다. 

 

클래스 : 클래스는 어떤 사물의 속성과 행위를 각각변수와 메서드를 사용해서
정의하고 있는 소프트웨어적인 설계도 입니다.

 

객체 :  객체는 실세계에 존재하는 사물, 그자체를 의미합니다.

 

정리하면 사물을 소프트웨어 적으로 추상화 시켜 놓은것을 클래스 라고 하고
클래스를 실제 사용할수 있도록 만든것, 또는 클래스가 실제 값을 가질수 있도록
메모리 공간에 할당해 놓은것을 인스턴스 또는 객체라고 합니다.

 

 

장점: 1.코드의 재활용성이 높다.

         2.코딩이 절차지향보다 간편하다.

         3.디버깅이 쉽다.

 

단점: 1. 처리속도가 절차지향보다 느리다.

         2. 설계에 많은 시간소요가 들어간다.

 

 클래스와 객체  활용 예제 ]

class TV { // class 는 독립된 모듈이다

	String power2;
	boolean power;
	int channel;
	int vol;

	void spower(){
		power = !power;
		if (power == true) {
			power2 = "켜짐";} 
		else {power2 = "꺼짐";}
	}
	void channelUp() {++channel;}

	void channelDown() {--channel;}

	void volUp() {++vol;}

	void volDown() {--vol;}
}

public class MyTV {
	public static void main(String[] args) {
		TV ttvv; // 스텍 영역에 레퍼런스 변수 ttvv를 위한 공간이 마련된다.

		ttvv = new TV(); // new 에 의한 인스턴스 생성이란 필드 , 메서드 값들을 저장할 수
							// 있는 별도의 공간은 heap 영역에 배당받는 것을 의미한다.
							// 참조 변수는 생성된 인스턴스의 주소를 저장하기 위해
							// 스텍영역에 메모리를 할당한다.

		ttvv.spower();

		ttvv.channel = 7;
		ttvv.vol = 55;

		ttvv.volUp();
		ttvv.volUp();
		ttvv.volDown();
		ttvv.channelUp();
		ttvv.channelUp();
		ttvv.channelUp();

		System.out.println("현재 ttvv는 " + ttvv.power2 + " 상태입니다.");
		System.out.println("현재 ttvv의 채널은 " + ttvv.channel + " 번 입니다.");
		System.out.println("현재 ttvv의 볼륨은 " + ttvv.vol + " 입니다.");
	}
}