👩🏻‍💻 Programming/Java 19

ArrayList 인터페이스를 구현한 클래스 활용

개요 1. 유저의 ID와 Name이 저장된 Member 객체를 구현한다. 2. Member 객체를 저장할 ArrayList를 구현한다. 3. Member 객체를 저장하여 특정 유저는 제거한 뒤, 남아있는 객체들의 정보를 출력한다. 코드 구성 Member : 멤버 정보를 저장할 객체 MemberArrayList : 멤버 정보를 ArrayList로 저장할 클래스 MemberArrayListTest : 멤버 정보를 저장하고 출력할 main 클래스 코드 예제 [ Member ] package ch10; public class Member { private int memberId; private String memberName; public Member(int memberId, String memberName) ..

Generic 메소드 활용

Generic 메소드의 활용 1. 두 점을 입력받아 한 점을 왼쪽위 모서리, 다른 한쪽을 오른쪽아래 모서리로 지정한다. 2. 사각형의 넓이를 double 형으로 계산하여 출력한다. 단, 입력되는 모서리의 값은 Integer일수도 있고, double일수도 있다. 코드 구성 GenericMethod : 두 점을 통해 사각형의 넓이를 구해 출력할 main 클래스 Point : 두 점을 저장할 제네릭 클래스 사각형의 넓이를 구하는 코드 예제 [ Point ] package ch07; public class Point { T x; V y; Point(T x, V y){ this.x = x; this.y = y; } public T getX(){ return x; } public V getY(){ return y;..

Generic과 상속 (T extends)

Generic 이란 간단하게 요약하면 클래스 내부에 지정하는 것이 아닌, 외부 사용자에 의해 지정되는 것을 의미한다. 예를 들어 Class 타입과 Interface 타입에 Generic을 지정하면 아래와 같다. [ Class 타입 ] class ClassGenericType { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } [ Interface 타입 ] interface InterfaceGenericType { T1 doSomething(T2 t); T2 doSomething2(T1 t); } 이제 외부에서 해당 Class와 Interface 타입에 String을 넣느냐, Intenger를 넣느냐에 따라 타..

클래스, 추상클래스, 그리고 인터페이스

일반 클래스와 추상 클래스 차이 일반 클래스 추상 클래스 클래스 앞에 abstract 명령어가 안붙음 abstract 명령어가 붙음 클래스 내부에 abstract 함수 생성 불가능 abstract 함수 생성 가능 객체 생성이 가능 불가능 공통적으로 부모를 1개만 둘 수 있다. [일반 클래스] class A { public A () { } // 생성자 메소드 abstract public void f_a() { } // 에러 발생 public void f_b() { System.out.println("class A f_a"); } } [추상 클래스] abstract class B { public B () { } // 생성자 메소드 abstract void f_a(); // 추상메소드 사용 가능 > 자식클래스..

[디자인패턴] Decorator pattern

Decorator Pattern 이란 기존 뼈대(Class)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 즉, 객체에 추가적인 요건을 동적으로 첨가한다. SOLID중에서 개방폐쇄 원칙(OCP)과 역전 원칙(DIP)을 따른다. 쉽게 예시를 들면, 에스프레소 원액 (기존 뼈대 = Class)에 물을 첨가하면 아메리카노가 된다. 또는 우유와 시럽을 첨가하면 카페 라떼가 된다. 이와같이 기존 뼈대는 유지하되, 필요한 형태로 꾸밀때 상요하는 패턴이 Decoratr Pattern이다. 예시 자동차를 예시로 들어보자. ICar라는 인터페이스를 정의하고, 이를 구현하는 Audi 클래스를 두고, 이로 인해 audi라는 객체가 생성됐다고 가정하자. 그런데 만약 런타임 단계에서 audi의 특징을 그대로 두고 업그레이..

JRE, JDK, 그리고 JVM

JVM Java Virtual Machine의 약어 자바 가상머신이라고도 불린다. 자바 프로그램을 컴파일해서 나온 결과인 바이트코드를 실행시켜주는 가상 머신 JRE Java Runtime Environment의 약자로, 자바 실행 환경을 의미 JVM을 동작하는데 필요한 각종 자바 라이브러리를 담고 있다. (ex : JAR - 자바 클래스 파일과 여러 시소스 및 메타데이터를 하나의 파일로 모아서 SW나 라이브러리를 배포하기 위한 포맷) JDK Java Development Kit의 약자로, 자바 개발 키트를 의미 Java 개발자를 위한 개발 환경의 셋트 JRE와 javac 등의 컴파일러, 디버거 등 java 프로그래밍에 필요한 기능들을 포함하는 프로그램 오라클 사에서 제공하는 오라클 JDK와 오픈소스로 개..

Static과 싱글톤 패턴 (Singleton Pattern)

싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 (ex : 서울-도쿄시 타임존, 회사.. 등등 단 1개만 존재할 수 있는 경우) 주로 서로 자원을 공유할 때 사용되는데, TCP Socket 통신에서 서버와 연결된 connect 객체에 주로 사용 Static 변수와 getInstance()를 구현하여 싱글톤 패턴 제작 가능 디자인 패턴이란? 자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 분리한 설계 GOF(Gang of four)의 디자인 패턴에서 소개되었으며, 생성 / 구조 / 행위 3가지 항목으로 나누어진 총 23개의 디자인 패턴이 존재한다. 싱글톤 패턴으로 객체 구현하기 객체는 private static으로 선언해서 오로지 한 번만 생성하도록 구현..

Java 언어의 유의사항

long 자료형 8 byte 자료형 숫자의 뒤에 알파벳 L 또는 l을 써서 long 형임을 표시 명시적 표시를 위해 보통 L을 사용 ex ) int num = 98765432100; // 오류 ex ) long lnum = 98765432100; // 오류 ex ) long lnumber = 98765432100L; // OK float 자료형 4byte 자료형 숫자의 뒤에 알파벳 F 또는 f를 써서 float타입임을 표시한다. ex ) float fnum = 3.14f; // OK 귀찮다면 그냥 double을 쓰자. double은 8byte이며 별도의 표시를 하지 않고 곧 바로 사용이 가능 변수를 선언한 타입보다 저장된 값이 작을 경우, 자동으로 형 변환이 이루어진다. 메서드 vs 함수 : 메서드는 클..