Java Programming에서 배우게 된 OOP가 다른 프로그래밍 언어에서는 어떤 방식으로 작동하는지 알아보기 위해 객체 지향 프로그래밍을 지원하는 Java, Python, C++에서의 똑같은 형식을 구현해보았다.
2022.12.31 -
객체는 기본적으로 필드와 메소드를 가지고 있고, 필드는 속성을, 메소드는 동작을 의마한다.객체는 상태(state)와 행동(behavior)을 함께 지닌 실체라고 정의된다. - 객체지향의 사실과 오해
다음 사진은 객체지향의 사실과 오해에서 나온 예제를 가져온 것이고, 다음 예제를 직접 Java, Python, C++에서 구현을 해보았다.
일단 다음처럼 간단하게 객체별로 작성할 수 있다.
class Customer {
public void order(String menuName) {
}
}
class MenuItem{
}
class Menu{
public MenuItem chooseCoffee(String name) {
}
}
class Barista {
public Coffee makeCoffee(MenuItem menuitem) {
}
}
class Coffee {
public Coffee(MenuItem menuItem) {
}
}
이후 세부사항을 작성한다.
class Customer {
// menuItem과 barista에 대한 객체 접근
public void order(String menuName, Menu menu, Barista barista) {
MenuItem menuItem = menu.chooseCoffee(menuName);
Coffee coffee = barista.makeCoffee(menuItem);
}
}
class MenuItem{
private String name;
private int price;
public MenuItem(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
class Menu{
private List<MenuItem> items;
public Menu(List<MenuItem> items) {
this.items = items;
}
// 커피 고르기
public MenuItem chooseCoffee(String name) {
for(MenuItem item : items) {
if(item.getName().equals(name)){
return item;
}
}
return null;
}
}
class Barista {
public Coffee makeCoffee(MenuItem menuitem) {
Coffee coffee = new Coffee(menuitem);
return coffee;
}
}
class Coffee {
private String name;
private int price;
public Coffee(MenuItem menuItem) {
name = menuItem.getName();
price = menuItem.getPrice();
}
}
class Customer:
def order(menuName, menu, barista):
menuItem = menu.chooseCoffee(menuName)
coffee= barista.makeCoffee(menuItem)
class MenuItem:
def __init__(self, name,price):
self.__name = name
self.__price = price
def getName(self):
return sef.__name
def getPrice(self):
return sef.__price
class Menu:
def __init__(self, items):
this.items = items
def choooseCoffee(name):
for item in items:
if(item.name == name):
return item
return null
class Barista:
def makeCoffee(menuitem):
coffee = Coffee(menuitem)
return coffee
class Coffee:
def __init__(self, menuItem):
self.__name = menuItem.name
self.__price = menuItem.price
공부를 해야한다
java programming을 수강하면서 객체 지향 프로그래밍의 기본적인 개념은 알게 되었지만, 헷갈리는 개념도 많았다. 그래서 이 객체지향의 사실과 오해를 읽으면서, 객체지향을 할때의 중요한 점과, 프로그래밍 방법등을 알게 되었다.
다음에는 한번 객체지향에서의 여러가지 디자인패턴에 대해 공부해보면 좋을 것같다.