언어 : JAVA
수업 주제 :
- Class 및 객체지향의 개념
- MVC 아키텍처란
Class란
Class란 메서드(함수)와 필드(변수)의 집합체이다.
또한 Class는 프로그램을 개발할 때 기능 단위로 분리하여 작성한다. 자동차가 프로그램이라면 바퀴, 엔진, 차체 등이 프로그램을 이루는 구성요소, 즉 Class라고 할 수 있다.
Class를 사용할 때, 유지보수가 수월해지고 해당 기능의 코드에 대한 접근성이 좋아진다는 장점이 있다.
Class 이름 중 첫 문자는 대문자로(전 세계의 암묵적 기준) 쓴다.
예를 들어, MyClassName이라는 Class를 만든다면 다음과 같다. 패키지는 default이다.
public class MyClassName {
}
클래스 앞의 public은 공개적으로 접근 가능하다는 의미이다. 접근성을 지정하는 키워드는 protected와 private가 있다.
new :
Class는 객체(object)를 만드는 일종의 형판(template)이다. 이를 실체(instance)로 만들기 위해서 new 키워드를 사용한다.
new MyClassName()
실체(instance)로 만든다는 것은 메모리 상에 실제 주소를 할당한다는 것이다.
그리고 이 주소를 저장하기 위해 변수를 설정해준다.
MyClassName my_object_name;
my_object_name = new MyClassName();
MyClassName my_object_name = new MyClassName();
위의 두 가지 방식으로 Class를 호출할 수 있다.
overload : 메서드 이름이 같아도, 매개변수의 개수, 타입으로 구분할 수 있다.
override : 상속받은 메서드 위에 덮어쓰는것.
Method와 Field
클래스에는 메서드와 필드라는 단위가 존재한다. 메서드란 클래스가 생성하는 객체가 지니고 있는 기능을 정의한다.
public class MyClassName {
public <return type> myMethodName(<type_1> par_1, ..., <type_n> par_n){
// 이 부분에 메서드의 몸체를 이루는 코드를 작성한다.
}
}
<return type> : 메서드 안의 코드를 실행 후 반환할 값의 type을 지정한다. {int, double, char, void, ...}
<type_1~n> : 매개변수의 type을 지정한다. {int, double, char, String, ...}
par_1~n : 매개변수의 이름을 지정한다.
다음과 같이 정의할 수 있다.
public class MyClassName {
public void myMethodName(int par_1, double par_2, char par_3){
// 이 부분에 메서드의 몸체를 이루는 코드를 작성한다.
}
}
만약 <return type>이 void가 아니라면 return <식>을 써서 값을 반환해준다.
MVC 아키텍처란
객체지향 설계:
설계도 = 클래스 다이어그램(class diagram)
설계도 부품 = 클래스(class) = 객체를 만들기 위한 형판
MVC 패턴을 이루는 클래스 종류 :
구분 | 역할 |
Starter | 시동 걸기 |
Model | 핵심 계산을 하는 두뇌(선수) |
View | 외부와 소통 창구(Input/Output 으로 구분) (자료형 변환) |
Controller | 매니저 지휘자 |
MVC(Model-View-Controller) Architecture
클래스 다이어그램 :
Starter은 Controller를 사용하고,
Controller은 View와 Model을 사용하고,
View는 Model을 사용한다.
개발 순서는 Model, View, Controller, Starter 순으로 작성한다.
Hello World 예제 :
위의 다이어그램에 따라서 각 클래스에 다음과 같은 코드를 작성한다.
public class Model {
public String createMessage() {
return "Hello, World";
}
}
import javax.swing.*;
public class View {
public void show(String message) {
System.out.println(message);
}
public void showSwing(String message) {
JOptionPane.showMessageDialog(null, message);
}
}
public class Controller {
void control(Model m, View v) {
String message = m.createMessage();
v.show(message);
v.showSwing(message);
}
}
public class HelloWorld {
public static void main() {
Model m = new Model();
View v = new View();
Controller con = new Controller();
con.control(m, v);
}
}
위의 코드는 Java환경에서 HelloWorld를 MVC 아키텍처를 사용하여 프로그래밍한 것이다.
시계를 만들어보자 :
import java.time.LocalTime;
public class Model {
LocalTime whatTimeIsIt() {
return LocalTime.now();
}
}
import java.time.LocalTime;
import javax.swing.JOptionPane;
public class View {
public void show(LocalTime time) {
System.out.println(time);
}
public void showSwing(LocalTime time) {
JOptionPane.showMessageDialog(null, time);
}
}
public class Controller {
public void control(Model m, View v) {
v.show(m.whatTimeIsIt());
v.showSwing(m.whatTimeIsIt());
}
}
public class Clock {
public static void main(String[] args) {
Model m = new Model();
View v = new View();
Controller con = new Controller();
con.control(m, v);
}
}