728x90

Java/study 34

MVC(Model, View, Controller) 패턴

MVC 패턴은 디자인 패턴 중 하나로 디자인 패턴은 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리하여, 상황에 따라 간편하게 적용해서 쓸 수 있는 것들로 모아 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 M(Model), V(View), C(Controller) 세 개세 개의 영역으로 분할하고 각 구성 요소에게 고유한 역할을 부여하는 개발 방식이 MVC 패턴이다. 모델은(Model)은 DATA, 정보들의 가공을 책임지는 컴포넌트를 말하며 애플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻하며, 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 ..

Java/study 2022.06.28

파일입출력

FileInputStream : 파일의 정보를 입력하는 클래스 read() 메서드를 호출하여 정보를 입력 받으며 1바이트의 데이터를 읽는다. 만약에 데이터를 읽다가 파일의 끝에 도달하여 더이상 읽을 데이터가 없는 경우에는 -1을 반환한다. read() 메서드의 아웃풋은 int형이기 때문에 받아온 데이터를 출력시 아스키코드로 출력된다. FileOutputStream: 파일의 정보를 출력하는 클래스 write() 메서드를 호출하여 바이트 배열을 파일에 출력 시키며 해당 파일이 경로에 존재하지 않을 시 새 파일을 생성해 준다. 파일이 이미 존재한다면 덮어쓰기 되며 오버로딩된 다른 생성자를 활용하여 두번째 인자로 true를 넣어주면 이어쓰기가 가능하다. 파일의 출력시 버퍼공간을 사용하기 때문에 flush()와 ..

Java/study 2022.06.27

예외(Exception)와 예외처리

Exception(예외)는 우리가 프로그램에서 실행을 할 때 문법상으로는 문제가 없었는데, 실제로 수행을 해보니 발생하게 되는 상황으로 실행 중에 예외가 발생하게 되면 프로그램이 즉시 종료되게 된다. 예외처리의 목적으로는 프로그램이 즉시 종료되는 현상을 방어하는 것이 우선 사항이라 할 수 있다. 예외 발생시 Exception 문구를 확인하여 어떤 타입(클래스)의 예외인지 확인하고 설명을 참고하여, 원인을 파악하고 발생한 라인을 확인한다. 문법 작성 시 예외가 발생할만한 구간을 try {}로 설정하고 catch(예외 문구 + 식별자){} 구문안에 발생된 예외를 넣어주어 즉시 종료되는 현상을 방지할 수 있다. 예를 들어 int a = 10이라 할 때 syso(a/0);을 실행하려 하면 java.lang.Ar..

Java/study 2022.06.24

컬렉션 프레임워크 - Map

데이터를 다룰 때에는 A데이터와 B데이터를 구분하기 위한 값이 반드시 필요하다 메모리에 저장된 주소가 될 수 도있고 Map을 사용할 경우 키 값이 그 역할을 하게 된다. 기본 키(primary key)는 주 키 또는 프라이머리 키라고 하며 데이터가 가지고 있는 고유한 값을 말한다. 고유하다는 것은 NULL값이 아니며 나만이 가지고 있는 유일한 값을 의미한다. Map을 사용하여 데이터를 저장할 때에는 값과 키 값을 1쌍의 데이터로서 저장한다. 이로 인해 값을 찾아낼 수 있게 해주는 것이 키값이다. Map 컬렉션을 이용한 학생부 프로그램 package class07; import java.util.HashMap; import java.util.Random; import java.util.Scanner; cl..

Java/study 2022.06.24

컬렉션 프레임워크

자바에서 컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 그로 인해 제작자의 편의성이 증가하고 유지보수가 용이해지며 제작자들의 실력이 상향 평준화 될 수 있다. 컬렉션 프레임워크의 인터페이스로는 List, Map, Set, Stack, Queue,... 등이 있다. 그중 List를 상속 받는 ArrayList(배열 리스트)는 Collection 프레임워크의 일부이며 스캐너와 랜덤처럼 java.util 패키지에 소속되어 있다. 배열리스트는 index를 사용하는 구조로 탐색을 자주 하는 프로그램과 주로 사용된다. 기존의 배열의 경우 자..

Java/study 2022.06.23

추상클래스와 인터페이스

추상 클래스란 A클래스, B클래스, C클래스가 있을 때 이들 클래스에서 비슷한 속성이나 메서드들을 추출하여 하나로 묶어 그들의 부모 클래스를 정의하기 위해 만들어진 클래스이다. abstract로 선언 할 수 있으며 과거에는 서로 다른 클래스들의 속성, 메서드들을 모아 만들어졌지만 현재에는 자식클래스를 만들기 위해서 사용되며 객체를 생성할 수는 없고 앞으로 만들어질 클래스들을 정의하는 데에만 사용된다. 추상 클래스와 비슷한 개념의 추상 메서드는 부모 클래스가 가지고 있는 메서드를 자식 클래스에 강제할 수 있다. 오버 라이딩이 강제되었다는 것은 개발자로서의 실수를 줄일 수 있다는 말이기도 하다. 추상 메서드는 메서드 바디{}를 가지고 있지 않는데 오버 라이딩이 강제되었다면, 동적 바인딩에 의해 자식 메서드만..

Java/study 2022.06.22

동적 바인딩

아래의 코드를 보면 포인트 클래스와 그를 상속하고 있는 컬러 포인트 클래스가 있으며 두 클래스 모두 toString()을 오버라이딩하고 있는 것을 볼 수 있다. 이후 메인 함수 안에 포인트 배열을 만들고 그 안에 포인트 객체와 컬러 포인트 객체를 넣은 것을 확인할 수 있다. 그리고 배열안에 들어있는 객체를 확인하기 위해 toString()을 사용하려 할 때 실제 저장된 값에 컬러포인트가 있음에도 불구하고 포인트에서 재정의한 toString()만 확인되는 것을 볼 수 있다. 이는 배열을 Point 클래스로 선언했기 때문이다.(객체들을 담은 상자가 Point 상자이기 때문이다.) 그런데 안내는 포인트라고 나와있지만 실제 배열에서는 컬러 포인트의 것을 호출하여 사용하고 있는데 이는 메서드를 호출할 때 자기자신..

Java/study 2022.06.22

타입캐스팅

원시 타입에서 정수형(int)을 실수형(double)으로 실수형(double)을 정수형(int)으로 출력하는 경우가 있다. 클래스의 경우에도 상속관계에 있는 부모와 자식 간의 형 변환이 일어나는 경우가 있는데 이를 업 캐스팅(Upcasting)과 다운캐스팅(Downcasting)이라 부른다. 업 캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형 변화 되는 것을 말한다. 예를 들어 Parents 라는 부모 클래스와 Child라는 자식 클래스가 존재하며 Parents의 객체 p와 Child의 객체 c가 존재 한다고 할 때 Parents p = (Parents)c 와 같은 형식으로 적용할 시 이를 업 캐스팅이라고 한다. 다운 캐스팅의 경우 업 캐스팅된 것을 다시 원래 상태로 돌리는 것을 말하며 하위 클..

Java/study 2022.06.21

접근제어자

변수나 메서드의 사용 권한은 접근 제어자를 사용하여 설정할 수 있다. 이러한 접근제어자로는 1.private 2.default 3.protected 4.public 이 있다. private -> default -> protected -> public 순으로 더 많은 접근을 허용한다. private private이 붙은 변수나 메서드는 해당 클래스에서만 접근이 가능하며 직접 접근하는 것을 막아주는 메서드가 getter와 setter이다. 직접 접근할 수 없는 멤버 변수의 값을 출력하는 데 사용되는 것이 getter 변경(값 대입) 하기 위해서 사용되는 것이 setter이다. default 접근 제어자를 별도로 설정하지 않은 변수나 메서드는 default 접근제어자가 되어 같은 패키지 내에서만 접근이 가능하..

Java/study 2022.06.20

오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩(Overloading) - 함수 명의 중복 정의를 허용하는 것으로 이를 적용하기 위해서는 메서드의 이름은 같고 인자의 개수와 자료형이 달라야만 한다. 조건이 같은데 리턴 값만 다르게 갖는 오버로딩은 적용할 수 없다. 오버라이딩(Overriding) - 상속관계에서 함수의 재정의를 의미하며 오버로딩과는 다르게 인자의 개수와 자료형이 같아야만 한다. 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 메서드를 변경하기 위해 사용한다. 아래의 포인트와 컬러 포인트 클래스에서 각각의 생성자들이 여러 번 재정의 되는 것을 확인할 수 있는데 이것을 오버로딩이라고 하며 각각 클래스에서 showInfo가 서로 다른 값을 출력하는데 이를 오버라이딩이라고 한다.

Java/study 2022.06.20
728x90