Java/Java 25

열거형 (Enum)

열거형(Enum) 열거형은 서로 연관된 상수들의 집합이다. 기본 예시) enum Seasons {SPRING, SUMMER, FALL, WINTER} //enum 열거형이름 {상수명1, 상수명2....} Seasons.SPRING // 열거형이름.상수명 - 상수에 접근 열거형으로 정의된 상수마다 첫 상수에 정수값 0이 할당되며 순서대로 다음 정수값이 할당된다. 열거형 메서드 리턴 타입 메서드 설명 String name() 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일합니다. int ordinal() 열거 객체의 순번(0부터 시작)을 리턴합니다. int compareTo(비교값) 주어진 매개값과 비교해서 순번 차이를 리턴합니다. 열거 타입 va..

Java/Java 2023.03.06

의존성 주입(Dependency Injection, DI)

의존성 주입이란 객체가 자신이 의존할 객체를 스스로 만들도록 하는 것이 아니라 외부에서 주입해주는 것을 의미한다. 의존성 주입을 사용하는 이유로는, 어떠한 앱의 하나의 클래스를 수정 혹은 변경이 이뤄질 경우 연결된 다른 클래스들을 수정할 필요 없이 해당 앱의 설정클래스(Appconfigurer)만 변경하게끔 만들기 위해서이다. 즉, 코드의 수정과 변경에 용이하게 끔 만들기위해 의존성 주입을 사용한다. 예제) public class Main { // 맨밑의 메인클래스에서 Kiosk 인스턴스를 이용해 앱을 실행하면 //각각의 인스턴스들이 각자가 필요한 다른 인스턴스들을 직접생성한다. static class Kiosk{ ProductRepository productRepository = new ProductR..

Java/Java 2023.03.05

복사 생성자와 싱글톤

이번 포스팅은 자바를 이용하여 간단한 Kiosk 프로토타입을 만들어 보던중 발생한 몇가지 버그에 대한 글이다. (Git : https://github.com/Mason3144/burger_shop-kiosk-practice ) 복사 생성자(Copy Constructor) 장바구니 기능을 구현하던중 발생한 버그이다. 처음 의도한 결과로는 메뉴에서 하나의 제품을 선택한뒤 옵션을 선택해주고 장바구니에 넣는다. 다시 동일한 제품을 선택하게되면 모든 옵션들이 초기화되어 다시 옵션을 선택해준다. 이었다. 하지만 처음 의도한 것과는 달리 동일한 제품을 선택하게 되면 옵션들이 전에 선택했던 옵션 그대로 저장되어 나타나게 되었다. 문제의 발단은 메뉴의 모든 제품(음식 객체)들의 정보를 담은 배열에서 하나의 객체를 선택,..

Java/Java 2023.03.05

객체지향 프로그래밍 심화(다형성, 추상화)

다형성 다형성이란 하나의 객체가 여러가지 형태를 가질수 있는 성질을 의미하며 상위 클래스 타입의 참조 변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 한 것 이라 할 수 있다. Person programmer = new Programmer(); (상위클래스타입) (참조변수명) = new (하위클래스생성자); 위와 같이 상위클래스 타입으로 하위클래스 객체를 만들수 있다. 또 다른 예제를 보자면 public class Main { public static void main(String[] args) { Person programmer = new Programmer(); programmer.test(); //programmer.test2(); 사용불가 System.out.println(programmer..

Java/Java 2023.03.01

객체지향 프로그래밍 심화(상속, 캡슐화)

상속화 상속화란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법요소이다. 보통 부모(상위), 자식(하위) 클래스로 나누어 부모클래스의 멤버(필드, 메서드, 이너클래스)를 자식 클래스와 공유하는 것을 의미힌다. 이때 이 두 클래스를 상속 관계라고 하며, 자식 클래스는 부모 클래스가 가진 모든 멤버를 상속 받는 상태라고 한다. 또한, 자식 클래스는 하나의 부모 클래스만 가질수 있지만 부모 클래스는 여러 자식 클래스를 가질수 있다. 상속 방법으로는 자식 클래스 이름 옆에 extends 키워드를 사용 하여 부모 클래스로부터 멤버들을 상속 받는다. class Person { String name; int age; void learn(){ System.out.println("공부를 합니다."); }..

Java/Java 2023.02.28

자바의 객체지향 프로그래밍 내부 클래스

내부 클래스 내부 클래스란 쉽게 말해 클래스 안에 선언된 또 다른 클래스이다. 내부 클래스를 이용하면 외부적으로 불필요한 데이터를 감출수 있으며 외부클래스의 멤버들에 쉽게 접근할 수 있어 코드의 복잡성을 줄일 수 있다. 내부 클래스의 종류로는 인스턴스 내부 클래스, 정적 내부 클래스, 지역 내부 클래스, 로컬 내부 클래스가 있다. 종류 선언 위치 사용 가능 변수 인스턴스 내부 클래스(instance inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 인스턴스 변수, 외부 전역 변수 정적 내부 클래스(static inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 전역 변수 지역 내부 클래스(local inner class) 외부 클래..

Java/Java 2023.02.25

자바의 객체지향 프로그래밍 기초

타입 스크립트에서 OOP에 대한 내용을 포스팅하였지만 작동원리와 사용법이 조금 달라 다시 작성하게 되었다. 객체지향 프로그래밍 (Object Oriented Programming, OOP) 객체지향 프로그래밍은 어떠한 객체의 속성과 기능을 분석한 후, 이것을 프로그래밍의 변수와 함수로 정의하여 객체를 만들고 이 객체들 간의 상호작용을 이용한 프로그래밍이다. 객체들은 하나의 완전하고 독립적인 기능을 가지기 때문에 코드간의 결합도를 낮춰 그 자체로도 유용하고 코드의 수정 또한 용이한 장점이 있다. 클래스와 객체 클래스란 객체를 정의한 설계도 즉 객체를 찍어내기 위한 공장 같은 개념이다. 클래스는 그저 객체의 속성과 기능을 기술해 놓은 것이며 이에 맞게 객체가 생성된다. 객체는 클래스에서 생성된 제품이라고 할..

Java/Java 2023.02.23

제어문(Control Flow Statements) - (조건문, 반복문)

조건문 (Conditional statement) if문 if(조건식1) else if(조건식2) else return 3 > 2 ? true : false //삼항 조건연산자 괄호 안의 식들을 조건식이라 하며 상위 조건식이 충족될경우 하위 조건식들이 충족되더라도 전체 if문을 종료하며 조건식은 모두 boolean값으로 반환될수 있어야한다. void 메소드를 제외한 모든 메소드들은 if문을 사용할경우 해당 if문에 else 혹은 해당 메소드내의 if문 밖에 return 값이 있어야하며 switch문 또한 해당 switch문에 default 값 혹은 해당 메소드내의 switch문 밖에서 return값이 있어야한다. switch문 String dice = "4"; switch (dice) { case "1"..

Java/Java 2023.02.20

콘솔 입출력 (I/O, Input/Output)

콘솔 출력 작성한 소스코드 내에서 특정한 값을 출력하여 확인할때 사용된다. System.out.println("Hello JAVA"); // 콘솔출력시 제일 많이 사용되며 콘솔에 해당 데이터를 출력하고 자동 줄바꿈이된다. System.out.print("Hello JAVA"); // 콘솔에 해당 데이터를 출력하지만 줄바꿈이 안된다. System.out.printf("Hello %s%n", "JAVA"); // String.format()의 형식으로 출력된다. System.out.printf("string", data) 지시자 출력 포맷 %b 불리언 %d 10진수 %o 8진수 %x, %X 16진수 %c 문자 %s 문자열 %n 줄바꿈 콘솔 입력 import java.util.Scanner; // 해당 프로젝..

Java/Java 2023.02.20

연산자

산술 연산자 사칙연산자와 나머지 연산자를 포함한 연산자이다. 연산자 기능 예시 결과값 + (덧셈 연산자) 두 항의 값을 더한 값을 반환합니다. 7 + 3 10 - (뺄셈 연산자) 좌항의 값에서 우항의 값을 뺀 값을 반환합니다. 7 - 3 4 * (곱셈 연산자) 두 항의 값을 곱한 값을 반환합니다. 7 * 3 21 / (나눗셈 연산자) 좌항을 우항으로 나눈 값을 반환합니다. 7 / 3 2 % (나머지 연산자 또는 모듈로 연산자) 좌항의 값을 우항의 값으로 나눈 나머지를 반환합니다. 7 % 3 1 증감 연산자 변수에 저장된 숫자형 데이터를 1증가시키거나 감소시킨뒤 그값을 재할당 할때 사용한다. ++num;//전위형(prefix) 연산자, 증감 연산을 먼저 수행한후, 그 결과값을 적용시킴 num++;//후위형..

Java/Java 2023.02.20