BACKEND/Java 50

[Java] Swing - JFrame

프레임 생성 Frame을 만드는 방법은 크게 두 가지가 있다. main() 메서드에서 JFrame 객체를 생성한다. JFrame을 상속받은 클래스를 만들어 Frame을 생성한다. (☆) [1] main() 메서드에서 JFrame 객체 생성 package frame; import javax.swing.JFrame; public class MyFrame1 { public static void main(String[] args) { JFrame f = new JFrame(); f.setSize(300, 300); f.setTitle("First frame"); f.setVisible(true); } } [2] JFrame을 상속받은 클래스를 만들어 Frame을 생성한다. (☆) package frame; im..

BACKEND/Java 2022.10.10

[Java] GUI 프로그래밍

GUI (Graphic User Interface)는 사용자가 편리하게 프로그램을 사용하기 위해 화면과 컴포넌트를 지원하는 사용자 인터페이스이다. 컨테이너(Container): 다른 컴포넌트를 포함하는 GUI 컴포넌트 (ex. JDialog, JFrame...) 컴포넌트(Component): 컨테이너에 포함되어 화면에 출력되는 GUI Object (ex. 대부분의 스윙 컴포넌트) 스윙 컴포넌트 예시는 다음과 같다. Swing Frame [스윙 프레임] 모든 스윙 컴포넌트를 담는 최상위 GUI 컨테이너 JFrame을 상속받아 구현 [JFrame의 구성] Frame - 스윙 프로그램의 기본 틀 Menu Bar - 메뉴들이 부착되는 공간 Content Pane - GUI 컴포넌트들이 부착되는 공간

BACKEND/Java 2022.10.10

[Java] Socket을 이용한 Client/Server 채팅 프로그램

소켓(socket)은 네트워크 상에서 수행되는 두 프로그램 간의 양방향 통신 링크의 한쪽 끝 단을 의미한다. 클라이언트의 포트를 통해 서버에 연결을 요청하면 서버에서 요청을 수락할 수 있다. 서버는 요청을 수락한 후, 새로운 소켓을 만들어 클라이언트와 연결을 생성한다. 이후, 클라이언트와 소켓이 연결되어 데이터를 주고 받는다. 대략적인 클라이언트와 서버의 연결 방법은 다음과 같다. Client. 1. 클라이언트 소켓 생성 및 서버 접속 Socket clientSocket = new Socket("128.12.11", 5550); 2. 네트워크 입출력 스트림 생성 BufferedReader in = new BufferedReader(new InpuetStreamReader(clientSocket.getIn..

BACKEND/Java 2022.10.03

[Java] LinkedList 클래스

배열은 연속된 자료 구조를 구현한다. 하지만 배열은 중간에 자료를 삽입하거나 삭제할 때 나머지 자료를 이동시켜 빈 공간을 만들지 못한다. 이런 점을 개선한 자료 구조를 링크드 리스트(linked list)라고 한다. 링크드 리스트의 각 요소는 다음 요소를 가리키는 주소 값을 가진다. 따라서 물리적인 메모리는 떨어져 있어도 논리적으로 앞뒤 순서가 있을 수 있다. 만약 A → B → D 가 순차적으로 저장된 링크드 리스트가 있다고 가정한다. 리스트의 3번째 위치(B와 D사이)에 'C' 요소를 추가해 본다. 기존의 배열이라면 D를 뒤로 밀어내고 공간을 비워 그 자리에 C를 놓을 것이다. 하지만 링크드 리스트는 서로 가리키고 있는 주소 값만 변경해 주면 된다. B가 가리키던 다음 위치를 C로 변경하고, C가 가..

BACKEND/Java 2022.09.29

[Java] List 인터페이스

List 인터페이스 List 인터페이스에는 객체를 순서에 따라 저장하고 유지하는 데 필요한 메서드가 선언되어 있다. 순차 자료 구조의 대표적인 예는 배열이다. (1) ArrayList 클래스 ArrayList를 활용한 MemberArrayList 클래스를 생성한다. 클래스에는 회원을 추가하는 addMember(), 회원을 삭제하는 removeMemeber(), 전체 회원을 출력하는 showAllMember() 메서드가 있다. package collection.arraylist; import java.util.ArrayList; import collection.Member; public class MemberArrayList { // ArrayList 선언 private ArrayList arrayList..

BACKEND/Java 2022.09.29

[Java] 컬렉션 프레임워크

프로그램의 기능을 효과적으로 구현하기 위하여 프로그램을 개발할 때 사용하는 자료를 어떤 구조로 관리할 것인가는 중요하다. 이때 사용하는 것을 자료 구조(data structure)라고 한다. 자료 구조는 프로그램 실행 중에 메모리에 자료를 유지, 관리하기 위해 사용한다. 자바에서는 필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하고 있는데, 이를 컬렉션 프레임워크(collection framework)라고 한다. 컬렉션 프레임워크의 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져 있다. Collection 인터페이스: 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공 Map 인터페이스: 쌍(pair)으로 된 자료를 관리하는 데 유용한 기능을 제공 1..

BACKEND/Java 2022.09.28

[Java] 제네릭(Generic)

여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic) 프로그래밍'이라고 한다. 제네릭에서는 여러 참조 자료형을 사용해야 하는 부분에 Object가 아닌 'T'와 같이 하나의 문자로 표현한다. 그리고 객체를 생성할 때, T 자리에 구체적인 자료형을 적는다. 즉, Box 클래스 안에 저장되는 구체적인 자료형 대신, T라는 타입 매개 변수로 표시한 것이다. 이렇게 되면 Box로 생성된 객체는 어떤 타입의 데이터든 저장할 수 있다. 제네릭 클래스(generic class)는 타입을 변수로 표시한다. 이것을 타입 매개 변수 (type parameter)라고 하는데 타입 매개 변수는 객체 생성 시에 프로그래머가 결정한다. 3D 프린터 클래스 예제를 통해 제네릭 프로그래밍을 이해해 본다...

BACKEND/Java 2022.09.28

[Java] Class 클래스

자바의 모든 클래스와 인터페이스는 컴파일 되고 나면 class 파일로 생성된다. 예를 들어 a.java 파일이 컴파일 되면 a.class 파일이 생성되고 이 class 파일에는 클래스나 인터페이스에 대한 변수, 메서드, 생성자 등의 정보가 들어 있다. 클래스의 정보를 사용할 경우 클래스가 정확히 어떤 자료형인지 알 필요가 있다. Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 다음과 같이 세 가지가 있다. // 1. Object 클래스의 getClass( ) 메서드 사용하기 String s = new String(); class c = s.getClass(); // 2. 클래스 파일 이름을 Class 변수에 직접 대입하기 Class c = String.Class; // 3. Class.forN..

BACKEND/Java 2022.09.28

[Java] 근의 공식

이차 방정식의 근을 구하는 공식이다. 각 a,b,c의 값을 입력한 후 해당 근의 공식에 대입하여 x의 값을 구한다. package sub06; import java.util.Scanner; public class Test11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("a값 입력: "); int a = sc.nextInt(); System.out.print("b값 입력: "); int b = sc.nextInt(); System.out.print("c값 입력: "); int c = sc.nextInt(); int x1 = (-b +(int) Math.sqrt(b*b - 4*a..

BACKEND/Java 2022.09.26

[Java] Wrapper 클래스

정수와 같은 기초 자료형을 객체로 포장하고 싶은 경우, 랩퍼 클래스(Wrapper Class)를 사용한다. 랩퍼 클래스는 여러 가지 유용한 메소드를 제공한다. 특히, 저장된 값을 다른 자료형으로 변환하는 메소드를 제공하기도 한다. // 객체를 매개변수로 받는 경우 public void setValue (Integer i) {...} // 반환 값이 객체인 경우 public Integer returnValue() {...} Wrapper 클래스의 종류는 다음과 같다. 기본형 Wrapper 클래스 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double 대표적인 Integer 클래스를 ..

BACKEND/Java 2022.09.26