OOP 6

의존성 주입(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

OOP를 이용하여 kiosk 시스템 만들기

타입스크립트와 객체 지향 프로그래밍을 이용하여 햄버거 매장에서의 kiosk 시스템을 만들어 보았다. 관리자 사이드와 소비자 사이드를 나누어 작성해주었으며 관리자가 제품을 등록하면 소비자가 등록된 제품중에서 골라 주문을 넣을수 있도록 코드를 짯다. 관리자 사이드 interface Menu { ref: number; // 등록된 제품들의 고유 id name: string; price: number; } class Register { private menu: Menu[] = []; static ref: number = 1; // 1부터 시작하여 제품마다 ref넘버를 순차적으로 부여 public addMenu(key: string, value: number) { const newMenu: Menu = { ref..

Typescript 2022.12.21

Object-oriented programming (객체 지향 프로그래밍)

객체 지향 프로그래밍이란 이름 그대로 객체를 만드는데 최적화된 프로그래밍이다. 수십 수백개의 객체를 관리하는데 유용하다. 캡슐화 캡슐화란 데이터 혹은 함수를 캡슐안에 넣는것을 의미한다. 쉽게말해 class 안에 함수나 데이터들을 넣는 것이다. const player = { name: "Mason", power: 10, speed: 5, }; const calculateDPS = (power: number, speed: number) => { return power * speed; }; const masonDPS = calculateDPS(player.power, player.speed); console.log(masonDps); 게임에서 캐릭터 하나를 만든다고 가정했을때 player란 객체를 수동적으로 ..

Typescript 2022.12.21