Bài tập hướng đối tượng viết chương trình làm bánh bao

mình đi thực tập và được giao viết chương trình làm 1 cái bánh bao. các bước làm 1 cái bánh bao.

  1. nguyên liệu : bột
  2. kích hoạt men.
  3. trộn nguyên liệu
  4. tạo hình
  5. hấp
    trước giờ đi học mình chỉ làm các bài tập như quan lý nhân viên, hay tính diện tích và chu vi thôi, người giao bài tập nói không cần đi sâu vào code. mục đích là để hiểu hơn về lập trình hướng đối tượng. mong mọi người giúp đỡ

Người giao bài tập bị điên ồi, lập trình hướng đối tượng mà không đi sâu vào code là thế quái nào?

3 Likes

mình cũng không hiểu nên mới hỏi, mình cũng không hiểu kiểu dữ liệu của bột với men với bánh bao là gì, rồi mấy cái phương thức như trộn với hấp nó là gì nữa. khó hiểu cực kỳ.

Bạn nên hỏi lại xem, cá nhân mình cho rằng oop không có nhiều ích lợi trong bài này: bạn có thể cho mỗi nguyên liệu là 1 class kế thừa từ class nguyên liệu, bánh bao là 1 class, nhưng chỉ có thế thôi.
Thấy cái này giống scripting programming.

3 Likes

Bài này hướng đối tượng cái gì? Cố ép nó vào khuôn thì cũng được thôi, nhưng ai lại cho con voi vào cũi chó?

Tất cả các hành động kích hoạt men, trộn nguyên liệu, tạo hình, hấp đều là hành động của con người.

2

public static Bột_nở kích_hoạt_men(Men men)

3

public static Nguyên_liệu_trộn trộn(Map<Nguyên_liệu_thô, Double> danh_sách_nguyên_liệu)

4

public static Bánh_bao_sống tạo_hình(Bột bột, Bột_nở bột_nở, Nguyên_liệu_trộn nguyên_liệu_trộn)

5

public static Bánh_bao_chín hấp(Bánh_bao_sống bánh_bao_sống)
4 Likes

Công ty nào vậy bạn? Nói đi để mọi người né :slight_smile:

2 Likes

bài này hay mà, sao lại bash chủ thớt như vậy :V Cái này giống như phần crafting trong game nè. Minecraft viết bằng Java có phần crafting, chắc chắn là OOP. Chưa gì nhảy vô viết bash script chủ thớt là xao :joy:

  • Bột là 1 game object stackable trong inventory, mỗi obj tương đương 100g bột, 1 stack trong inventory max 25 obj ~ 2.5kg :kissing_closed_eyes:
  • Men là 1 object unstackable, mỗi stack là 1 gói
  • MenKíchHoạt tạo từ Men thông qua hàm kichHoatMen :joy:
  • TrộnNguyênLiệu sẽ nhận vào Bột và MenKíchHoạt, cho ra chắc gọi là BộtNở. Stackable object, khối lượng ra bao nhiêu tùy vào khối lượng bột và số lượng men kích hoạt. Có thể thuộc về 1 cái class MáyTrộn.
  • TạoHình nhận BộtNở, cho ra BánhBaoThô :joy: Stackable, max 5 cái 1 ô :V số lượng đầu ra tùy thuộc vào khối lượng BộtNở đầu vào. Có thể cần class Khuôn, hoạt thuộc về class Người mà tạo hình :joy:
  • Hấp nhận BánhBaoThô, cho ra BánhBao :kissing:. Cần LòHấp, hay Hấp có thể là 1 method của LòHấp. LòHấp giống như 1 inventory, cho phép hấp nhiều BánhBaoThô, có thể thêm method đút Hấp-able objects vào lò :rofl: Có thể cho thêm thuộc tính nhiệt độ hấp, thời gian hấp…

tất cả các static method thuộc về 1 class gọi là CraftingTable :kissing:

4 Likes

Sao nó giống giống Template method Pattern thế nhỉ. :upside_down_face:

1 Like

chém gió về gaem đi, nếu bạn làm 1 game có crafting thì thiết kế phần crafting thế nào :V

1 Like

cũng k chắc, biết đâu người ra đề họ có ý khác, giờ bạn làm cái bánh bao, hôm sau kiu bạn mở rộng bằng bánh bao nhân thịt heo, thịt gà… rồi hấp bằng nhiều cách… nói chung là hên xui :smile:

1 Like

À mà new một cái vỏ bánh, rồi nhồi nhân, lấy topping, rồi gói lại (finalize) là pattern gì nhỉ? :smiley:

Chỉ khác là có người không muốn topping.

1 Like

Vẫn là Template Method thôi. :v
Mấy tutorial ghi đơn giản, nhưng mình có thể mở rộng nó ra, như làm 1 cái máy sản xuất bánh bao có nhiều công đoạn cũng được, mấy công đoạn không nhất thiết tuần tự, while, if, hay phân ra cả đống method con được cả.

class MaySanXuatBanhBao {
  BanhBao vanHanh(Bot bot, Men men) {
    lenMen(men); tron(...); taoHinh(...); return hap(...);
  }

  abstract void lenMen(Men men) { ... }
  abstract void tron(...) { ... }
  abstract void taoHinh(...) { ... }
  abstract BanhBao hap(...) { ... }  
}

Bot là interface, rồi implements nhiều bột khác nhau

interface Bot { ... }
class BotGao implements Bot { ... }
class BotKhoai implements Bot { ... }
class BotGiat implements Bot { ... }

Men cũng là interface, cũng có nhiều class implement luôn

interface Men { ... }
class MenXin implements Men { ... }
class MenDom implements Men { ... }
class MenGiam implements Men { ... }

Sản phẩm tạo nhiều loại bánh bao, ứng với mỗi cách sản xuất bánh bao

interface BanhBao { ... }

class BanhBaoTrungMuoi implements BanhBao { ... }
class MaySanXuatBanhBaoTrungMuoi implements MaySanXuatBanhBao { ... }

class BanhBaoTrungCut implements BanhBao { ... }
class MaySanXuatBanhBaoTrungCut implements MaySanXuatBanhBao { ... }

class BanhBaoKhongNhan implements BanhBao { ... }
class MaySanXuatBanhBaoKhongNhan implements MaySanXuatBanhBao { ... }

Cuối cùng chạy thôi

BanhBao trungMuoi = (new MaySanXuatBanhBaoTrungMuoi()).vanHanh(new BotGao(), new MenXin());
BanhBao trungCut = (new MaySanXuatBanhBaoTrungCut()).vanHanh(new BotKhoai(), new MenXin());
BanhBao khongNhan = (new MaySanXuatBanhBaoKhongNhan()).vanHanh(new BotGiat(), new MenDom());

Tính ra bài này cũng có thể xem là bài tập OOP được à. :penguin:

8 Likes

Bài tập về Design pattern

3 Likes

Cái này có thể thay thế cho các constructor siêu to khổng lồ :smiley:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?