본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 10일차 -20

by oncerun 2020. 3. 10.
반응형

 

데이터 구조화.

구조란? 

1. 구조 그룹으로 만들어진 체계.

2. 구조화: 여러 개체들을 그룹으로 묶어서 만듦.

3. 구조가 존재하려면 계층화된 그룹이 필요하다

 1조,2조...5조,6조

4. 중복적으로 그룹핑할 수 있다.

 1 분단(1조,2조,3조) 2 분단(4조,5조,6조)

 

왜 구조화가 필요할까?

코딩에서 구조화가 필요한 이유는 단순화이다.

각 여러 가지 변수가 흩어져있을 때 동일된 개념으로 묶은 뒤

따로 관리하면 가시적으로  코드를 봤을 때 이해가 더욱 빠르다.

또 내가 생각하는 단위로 묶어서 설명할 수 있기 때문에 구현 단위가 간소해지고 직관적으로 바뀐다.

 

그럼 어떻게 자바에서 구조화할까?

이클립스 기준 

새로운 클래스 파일을 만든 뒤

클래스 이름은 구조 화명이다.

public class Omok {
	int x, y, color; //멤버 변수를 선언해준다.
	
}

 

 

구조화를 시켜보면.

 

 

package Ex1struct;
import java.util.Random;
import java.util.Scanner;

public class Ex16omokProgram4 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		//데이터구조화
		Omok omok = new Omok();
		Omok[] omoks ;
		
		omok.x = 0;
		omok.y = 0;
		
		final int HEIGHT ;  //대입값을 고정시키기위해
		final int WIDTH;
		int[] xs ;
		int[] ys ;
		int menu;
		
		
		final int SMAP =1;
		final int MMAP =2;
		final int LMAP =3;
		while (true) {
			System.out.println("어떤 바둑판 크기를 원하십니까?");
			System.out.println("1. (20x20)");
			System.out.println("2. (40x20)");
			System.out.println("3. (60x30)");
			System.out.print(">");

			String menu_ = scan.nextLine();
			menu = Integer.parseInt(menu_);

			if (menu < 1 || menu > 3)
				System.out.println("1~3사이의 값을 입력하세요");
			else
				break;
		} // while

		switch (menu) {

		case MMAP:
			HEIGHT = 40;
			WIDTH = 20;
			break;
		case LMAP:
			HEIGHT = 60;
			WIDTH = 30;
			break;
		case SMAP:
		default:
			HEIGHT = 20;
			WIDTH = 20;
		}//swich
		char[][] board = new char[HEIGHT][WIDTH];
		xs = new int[WIDTH*HEIGHT];
		ys = new int [WIDTH*HEIGHT];
		// switch
			// 비절차식 그리기.
	
		// 바둑판 저장하기
		for (int y = 1; y <= HEIGHT; y++) {
			for (int x = 1; x <= WIDTH; x++) {
				board[y - 1][x - 1] = '┼';
			}
		}
		//상판
		for (int x = 1; x < WIDTH; x++)
			board[0][x - 1] = '┬';

		//우측벽
		for(int y =1; y <=HEIGHT; y++)
		board[y-1][WIDTH-1] = '┤';
		
		//밑판
		for(int x= 1; x <= WIDTH; x++)
			board[HEIGHT-1][x-1] = '┴';
		
		//좌측벽
		for(int y =1; y <=HEIGHT; y++)
			board[y-1][WIDTH-20] = '├';

		//4개의 꼭지점.
		board[0][0] = '┌';	//왼쪽상단모서리
		board[0][WIDTH-1] = '┐';  // 오른쪽상단모서리
		board[HEIGHT-1][WIDTH-1] = '┘';  //오른쪽하단 모서리
		board[HEIGHT-1][0] = '└';  //왼쪽하단모서리
		
		// 바둑판 출력하기


		
		// 사용자한테 오목을 입력 받아서 그것을 오목판에 둔다.
		
		
		//흰돌의 위치 입력
		while(true) {
			
		int	index =0 ;
		System.out.println("x좌표입력,y좌표입력");		
		omok.x = scan.nextInt();
		omok.y = scan.nextInt();
		System.out.println();
		//값에 숫자저장
		xs[index] = omok.x-1;
		ys[index] = omok.y-1;
		index++;
		//그 배열 o넣는작업
		for(int i =0 ; i < index; i++) {
			int x =xs[i] ;
			int y =ys [i];
			board[x][y] = '●';
		}
		
		//내용 저장
		board[omok.y-1][omok.x-1] = '●';
		//입력값 받은 바둑판 출력
		for (int y = 1; y <= HEIGHT; y++) {
			for (int x = 1; x <= WIDTH; x++) {
				System.out.printf("%c", board[y - 1][x - 1]);
			}
			System.out.println();
		}//for
		
		}//while
		
	}//main
}//class

Omok [] omok = new Omok [100];


omoks [0] = new Omok();  // 첫 번째 클래스 배열을 초기화시켜줍니다. 이때 new로 생성자를 콜 해서 객체에 메모리를 할당합니다.
omoks [0]. x =3  //첫 번째 클래스 배열이 Omok() 클래스의 x값을 참조해서 3이란 값을  저장합니다.

 

이해를 돕기 위한 newlecture 강의 사진을 첨부합니다.

반응형

댓글