반응형
데이터 구조화.
구조란?
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 강의 사진을 첨부합니다.
반응형
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 11일차 -22 (0) | 2020.03.11 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 10일차 -21 (0) | 2020.03.10 |
자바기반의 웹&앱 응용 SW개발자 양성과정 10일차 -19 (0) | 2020.03.10 |
자바기반의 웹&앱 응용 SW개발자 양성과정 9일차 -18 (0) | 2020.03.09 |
자바기반의 웹&앱 응용 SW개발자 양성과정 8일차 -17 (0) | 2020.03.09 |
댓글