Java
-
Java로 다중 스레드 만들기Java/Java 이론 2022. 3. 14. 00:53
다중 스레드 만들기 복수의 스레드가 실행되는 상황을 자바로 만들어보자. Thread Class extends Thread 하나의 스레드를 만들려면 Thread 클래스를 extends 하는 클래스를 만들어야 한다. run() 스레드의 실행 내용은 run() 메서드 안에 들어가야 한다. thread.start() 클라이언트 객체가 thread 클래스의 start() 메서드를 실행하면 스레드가 실행된다. 예제 Light 객체 Light 객체가 있다고 가정한다. Light 객체는 ON과 OFF 두 가지 상태 중 하나이고, 최초로 생성된 Light는 OFF 상태라고 하자. ON 상태에서 on_button_pushed()를 실행하면 "반응 없음"이 콘솔 창에 출력되고, OFF 상태에서 on_button_pushed..
-
스테이트 패턴Java/Java 이론 2022. 3. 14. 00:28
스테이트 패턴 객체의 상태에게 역할을 위임하는 스테이트 패턴을 알아보자. 객체의 상태 객체에서의 상태란 객체가 생존 주기 동안 가질 수 있는 조건이나 상황을 뜻한다. 사람이나 사물도 현재에 상태에 따라 다르듯이, 객체지향도 현실 세계를 반영한 것이기 때문에 객체마다 상태가 존재한다. Switch & Client Switch public class Switch { private int ON = 1; private int OFF = 0; private int state; public Switch(){ state = OFF; } public void getOnSwich(){ if(state==ON) System.out.println("이미 ON 상태입니다."); else{ state=ON; System.out..
-
UML Symbol(클래스 간의 관계)Java/Java 이론 2022. 3. 13. 02:03
UML Symbol UML에서 클래스 다이어그램을 나타낼 때, 클래스 간의 관계를 표현하는 UML Symbol을 알아보자. 클래스 다이어그램 UML의 구조 다이어그램 중 클래스의 논리적인 구조를 정적으로 표현하는 것으로, 클래스들 간의 관계를 클래스 다이어그램으로 볼 수 있다. UML Symbol 출처 : http://www.ivencia.com 이미지의 순서대로 UML Symbol을 살펴보자. 연관 관계 : 두 클래스가 연관(일반적으로 한 클래스가 다른 클래스를 사용할 때) 되어 있을 때는 위와 같이 표현한다. 의존관계와는 다르게 오랜 기간 두 객체가 협력관계를 수행할 때 연관 관계로 분류한다. 의존 관계 : 연관 관계와 한 클래스가 다른 클래스를 사용할 때인 것은 같으나, 연관 관계와는 다르게 두 객..
-
자바빈 규약Java/Java 이론 2022. 3. 12. 20:09
자바빈(JavaBean) 자바빈의 사용 이유와 규약을 알아본다. 자바빈의 사용 이유 자바빈을 사용하는 이유는 디자인(프론트엔드)와 로직(백엔드)를 분리하기 위해서이다. JSP, Mustache 등 자바로 만든 서버를 프론트엔드와 구현할 때, 공통의 약속을 지키며 사용함으로써 프론트엔드에 백엔드의 로직을 구현하는 등의 일이 없이 일관된 방식으로 자바 클래스를 사용할 수 있도록 도와준다. 자바빈 규약 기본 생성자를 반드시 가지고 있어야 한다. 자바빈의 객체를 다른 곳에서 이용하려고 할 때, 기본 생성자 외에 다른 오버 로딩 된 생성자가 있다면, 자바빈을 사용하기 위해선 다른 생성자의 인자를 알고 있어야 사용할 수 있다. 자바빈은 이런 생성자가 아닌 getter/setter로 필드값을 할당할 목적으로 만들어졌..
-
OCP와 DIPJava/Java 이론 2022. 3. 12. 19:39
OCP, DIP 객체지향 설계 5대 원칙(SOLID) 중 OCP와 DIP에 대해 알아보자. OCP(Open Closed Principle) : 개방 폐쇄 원칙 OCP -> 개방 폐쇄 원칙을 한 마디로 정의하면 확장에는 개방되어 있어야 하고 변경에는 폐쇄되어 있어야 한다.라는 원칙이다. 모순적으로 들리는 말이지만 차근차근 알아보자. 핸드폰의 사용자가 있고, 사용자는 아이폰에 의존한다고 생각해보자. 그러면 사용자와 아이폰의 의존 관계는 다음과 같이 된다. 위와 같은 상황에서 사용자의 핸드폰이 안드로이드폰으로 바뀐다고 해보자 그러면 사용자는 아이폰에서 안드로이드폰에 대한 사용법을 다시 배워야 한다. 애초에 사용자에게 아이폰과 안드로이드폰에 대한 공통의 가이드라인이 주어지고, 아이폰과 안드로이드폰이 그 가이드에..
-
Java로 GUI 회원관리 만들기(Swing)Java/Java 이론 2022. 3. 11. 11:58
GUI 회원관리 만들기(Swing) 자바 Swing을 이용해 GUI 회원관리를 만들어보자. 프로젝트 설계 ServiceLayer가 GUI와 DAO(Data Access Object)를 연결해 주고, DAO가 모델인 VO(Value Object)를 바탕으로 DBMS와 연결돼있는 구조이다. 프로젝트 구조 GUI 디자인 기본적인 디자인은 Window Builder를 이용하여 만들었다. 싱글턴 Service, DAO Service와 DAO 객체는 효율적인 구조를 위해 싱글턴으로 생성하였고, DAO는 sql 문법으로 MySQL과 연동된 DB에서 데이터를 출력하는 구조이다. 싱글턴 ServiceLayer 싱글턴 UserDAO 데이터 출력 sql 전체 소스 UserDAO.java package userService...
-
Builder 패턴 (Java)Java/Java 이론 2022. 3. 8. 01:58
Builder 패턴 생성자의 파라미터를 이용해 클래스를 만들 때 Builder 패턴을 사용한다. 필요성 생성자의 파라미터를 이용해 클래스를 만들 때, 신경 써야 할 인자들이 2~3개라면 상관없지만 인자들이 20개, 30개 .. 많은 수라고 생각해보자. 그때그때 상황에 맞는 생성자를 일일이 만들어 줄 수 없기 때문에 Builder Pattern을 이용한다. 예제 public class Test { private int testEl1; private int testEl2; private int testEl3; private int testEl4; private int testEl5; } 위와 같은 Test Class가 있다고 생각해보자. 원하는 그때그때 원하는 변수만 바꿀 수 있는 생성자를 만들기 힘들다. ..
-
어댑터 패턴 (Adapter Pattern)Java/Java 이론 2022. 3. 7. 00:43
어댑터 패턴 자바의 데이터베이스 시스템과 같이, 사용자가 구체적인 내부 구조를 몰라도 공통의 인터페이스를 통해 조작할 수 있는 것들이 있다. 이러한 것들을 가능하게 하는 것이 싱글턴 패턴(Singleton pattern) 인데, 변환기라는 뜻을 가진 어댑터의 뜻에 맞게, 호출하는 쪽에 맞게 중간에 변환을 해주는 패턴이다. 예시 패턴이 적용 안된 클래스 아래의 두 클라스가 있다고하자. public class ClassA { void runClassA() { System.out.println("ClassA의 메서드가 실행"); } } public class ClassB { void runClassB() { System.out.println("ClassB의 메서드가 실행"); } } 사용자의 입장에선 clas..