トップページ⇒tech
101コメント23KB

ラーメンの製作過程をOOPするスレ

■ このスレッドは過去ログ倉庫に格納されています
0001ラーメンマンNGNG
 中
( ´谷`)ヨロシク
0002デフォルトの名無しさんNGNG
そもそも製作過程を知らない
0003デフォルトの名無しさんNGNG
1の名前欄から「マン」を取る
0004デフォルトの名無しさんNGNG
>>3
見事、完成しましたね。
0005デフォルトの名無しさんNGNG
>>1 は中谷さん。
…
誰だよ。
0006デフォルトの名無しさんNGNG
ラーメン = 職人.ラーメン作る();
0007デフォルトの名無しさんNGNG
カップメンと出前一丁しか作ったこと無い。
0008デフォルトの名無しさんNGNG
class CRaamen:public IRaamen{
protected:
 CFactroy<CYasai> hatake_;
 CFactory<CNiku> noujyou_;
};

わかんねぇ…
0009デフォルトの名無しさんNGNG
class Noodle { }
class RamenNoodle : Noodle { }
0010デフォルトの名無しさんNGNG
まず、分析しろよ、おまいら、、、、

ラーメンの構成要素は何か
スープ、麺、トッピング、どんぶり

スープには何があるか
しょうゆ、みそ、しお、とんこつ

麺には何があるか
細麺、太麺

トッピングには何があるか
チャーシュー、シナチク、ナルト、コーン、もやし、焼き海苔、

どんぶりには何があるか
普通、大盛り
0011デフォルトの名無しさんNGNG
中谷美紀タンのスレですねええええええええええええええええええええええ@@!!!!


うっぅぅぅうううううううううううううううううううわっほぅぅ!!
0012デフォルトの名無しさんNGNG
とりあえず具材のクラスでもつくってみるか。

まずなると

class @
{
}
0013デフォルトの名無しさんNGNG
めんま
class |
0014デフォルトの名無しさんNGNG
焼き海苔
class ■
0015デフォルトの名無しさんNGNG
煮玉子
class ◎
0016デフォルトの名無しさんNGNG
もやし
class ∬
0017デフォルトの名無しさんNGNG
いけませんね。
それぞれの具に、茹でるインタフェースが実装されてません。
0018デフォルトの名無しさんNGNG
茹でるとは限らないから、下ごしらえインターフェースが必要かな。
0019デフォルトの名無しさんNGNG
ところで>>1の中谷ってだれ?
0020デフォルトの名無しさんNGNG
美紀タン
0021デフォルトの名無しさんNGNG
とりあえず俺は食う係
0022デフォルトの名無しさんNGNG
てかインタフェースとしてはトッピングじゃねーか?
そのサービスの一つに下ごしらえがあると、、、。

interface トッピング
{
 下ごしらえ()
}
0023デフォルトの名無しさんNGNG
ラーメン本体にも下ごしらえはあるだろう
0024デフォルトの名無しさんNGNG
カップにお湯入れて3分待つだけだろ。
0025デフォルトの名無しさんNGNG
>>24 にとっての「ラーメン」は、だろ?
0026デフォルトの名無しさんNGNG
なにげにウケるスレなんだがw
0027デフォルトの名無しさんNGNG
>>23
ラーメン本体は、麺、スープにわけて考えるべきだべ。
0028デフォルトの名無しさんNGNG
環境依存にならないように、調理器具も抽象化しようぜ
0029デフォルトの名無しさんNGNG
NoodleFactoryクラスに原材料であるWheatを渡すとか。
0030デフォルトの名無しさんNGNG
惑星環境に依存しないように、素粒子レベルまで抽象化しようぜ
0031デフォルトの名無しさんNGNG
とりあえず、なんでもいいから化学調味料いれとけ。
0032デフォルトの名無しさんNGNG
調味料に頼ったラーメンは三流なんだよ。
0033デフォルトの名無しさんNGNG
ラーメンライスとかどうするよ?
0034デフォルトの名無しさんNGNG
プラグイン化しようぜ。
0035デフォルトの名無しさんNGNG
>>33
ラーメンライスは、ラーメンとライスであって、ラーメンライスというものではないので、
SetCollectionにラーメンとライスを保持させて実現する。
0036デフォルトの名無しさんNGNG
とりあえず生ビール
0037デフォルトの名無しさんNGNG
ビールとラーメンってのは個人的には相容れない。
0038デフォルトの名無しさんNGNG
米沢らーめん愛愛では、主に定食を食べる。
0039デフォルトの名無しさんNGNG
class NoodleFactory {
static Noodle createNoodle(Material wheat);
}
0040デフォルトの名無しさんNGNG
実際はまずは麺から作るの?
それともスープ?
0041デフォルトの名無しさんNGNG
麺はたいがいは製麺所にたのんでるんだろ?
出来合いでいいんじゃない?
0042デフォルトの名無しさんNGNG
>>35
ラーメンの具にライスを投入する場合もあるだろう。

ラーメンの麺を食べた後にまだ食い足りなくて、そうめんを入れたり、マカロニを入れたり
ごはんを入れてラーメンおじやとかにするユースケースも想定しなくてはならない。
0043デフォルトの名無しさんNGNG
実はもれラーメンにライスぶっかけて食うの好き
0044デフォルトの名無しさんNGNG
漏れはライスにラーメンの汁をぶっかける派
0045デフォルトの名無しさんNGNG
おまいらひとつ教えてくれ。

目指しているのは、非の打ち所無く一部の隙も無駄も無い
輝かんばかりのラーメン「の製作過程」でつか?

汚れだが凄まじいパワーと推進力で事を進めるラーメン職人はこの際用なし?
0046デフォルトの名無しさんNGNG
Decoratorか何かでスープのダシの材料の
付け加えを容易にできるようにした方がいいな。
0047デフォルトの名無しさんNGNG
汎用ラーメンオブジェクト

class Ramen {
 public String shousai;
 public Ramen(String shousai) {
  this.shousai = shousai;
 }
}

使い方

Ramen miso = new Ramen("みそラーメン、具は海苔2枚とチャーシュー1枚");
Ramen shouyu = new Ramen("しょうゆラーメン、具はメンマ30g");
0048デフォルトの名無しさんNGNG
すげえ、どんなラーメンでも表現できるじゃん!!
0049デフォルトの名無しさんNGNG
汎用ラーメンマンオブジェクト

class RamenMan extends Ramen {
 public RamenMan(String shousai) {
  super(shousai);
 }
}

使い方

RamenMan sono1 = new RamenMan("我こそはラーメンマンだ。");
RamenMan sono2 = new RamenMan("私こそラーメンマンだ。");
0050デフォルトの名無しさんNGNG
抽象的すぎるんだよ。


class Thing {
 public String details;
 public Thing(String details) {
  this.details = details;
 }
}

使い方

Thing thing = new Thing("世の中で起こる事象、存在する物体、なんでもいいから、何か");
0051デフォルトの名無しさんNGNG
ラーメンマンはラーメンを継承してできるのか……。
0052デフォルトの名無しさんNGNG
モンゴルマンがラーメンマンを継承した場合に発生する脆弱性について
0053デフォルトの名無しさんNGNG
オブジェクト指向ではラーメンすら作れないってよく分かったよ
0054デフォルトの名無しさんNGNG
>>52
RemoveMaskExceptionでもcatchしとけ。
0055デフォルトの名無しさんNGNG
template<typename I, typename RO, typename HA> class Ramen : public Pasta<Japan, I, RO, HA, NI>
{
};
0056デフォルトの名無しさんNGNG
モンゴルマンはラーメンマンの薄いラッパークラスでしかありません。
0057デフォルトの名無しさんNGNG
>>52
左頭部にセキュリティホールが見つかりました。
0058デフォルトの名無しさんNGNG
oyaji.chumon("ramen", 1, "katame")
0059デフォルトの名無しさんNGNG

IkkonoChumon
├KatasaType katasa;
└RamenType ramenType;

Chumon
└IkkonoChumon[ ] chumonList;

bokunoChumon : IkkonoChumon
bokunoChumon.katasa = KATAME
bokunoChumon.ramenType = RAMEN

mamanoChumon : IkkonoChumon
mamanoChumon.katasa = YAWARAKAME
mamanoChumon.ramenType = MISORAMEN

papanoChumon : IkkonoChumon
papanoChumon.katasa = HARIGANE
papanoChumon.ramenType = TONKOTURAMEN

bokutatinoChumon : Chumon
bokutatinoChumon.chumonList = [ bokunoChumon, mamanoChumon, papanoChumon];

oyaji.chumonWoUkeru(bokutatinoChumon);
0060デフォルトの名無しさんNGNG
public class Oyaji
{
 public void make(String order)
 {
  System.out.println("へい、" + order + "お待ちどう!!");
 }
}
0061デフォルトの名無しさんNGNG
>>60
Oyaji.make() からは Ramen 型の返り値とか欲しくね?

Noodle{
Soup soup;
Men men;
Gu[ ] gu;
}
Ramen : Noodle{
RamenSoup soup;
RamenMen men;
RamenGu[ ] gu;
}

Soup{
Mizu mizu;
Dasi dasi;
Enbun enbun;
}
Soup SHOUYUSOUP, MISOSOUP, SIOSOUP, TONKOTUSOUP;
RamenSoup : oneof [ SHOUYUSOUP, MISOSOUP, SIOSOUP, TONKOTUSOUP ];

Men{
Real Futosa;
Real Nagasa;
Real TidireGuai;
MenKiji kiji;
}
Men HOSOMEN, FUTOMEN, HIRAMEN, TIDIREMEN;
RamenMen : oneof [ HOSOMEN, FUTOMEN, HIRAMEN, TIDIREMEN ];
0062デフォルトの名無しさんNGNG
注文は注文だから、Oyajiはファクトリだよな。
リフレクションでいくのだ。
Javaわすれたので、こんな感じか?

public class Oyaji {
 private Properties menu;
 
 public Oyaji() {
  //メニューをファイルから初期化
 }
 
 public Ramen make(String order) {
String name = menu.get(order);
  if (name == null)
   System.out.println("うちはそんなのねーぜ、ばかやろー!");
  Ramen r = (Ramen)Class.newInstance(name);
  System.out.println("へい、" + order + "お待ちどう!!");
return r;
 }
}

Menu.properties
しょうゆラーメン=rairaiken.ShouyuRamen
しおラーメン=rairaiken.SioRamen
みそラーメン=rairaiken.MisoRamen
とんこつラーメン=rairaiken.TonkotsuRamen
これらのクラスは、Ramenを継承してできてる。
プロパティを変えれば、他の店用にカスタマイズ可能。
0063デフォルトの名無しさんNGNG
>>62
それじゃ甘いよ
ラーメンの初期化をどうやってやるんだい?
ここは、2段構えのファクトリじゃないとね

String recipeName = menu,get(order);
Recipe recipe = (Recipe)Class.newInstance(recipeName);
Ramen ramen = recipe.create();
return ramen;

プロパティファイルは、
しょうゆラーメン=rairaiken.ShouyuRamenRecipe
しおラーメン=rairaiken.SioRamenRecipe
みそラーメン=rairaiken.MisoRamenRecipe
とんこつラーメン=rairaiken.TonkotsuRamenRecipe
0064デフォルトの名無しさんNGNG
>>62
ばかやろーのあとはOyajiRuntimeExceptionなげろよw
0065デフォルトの名無しさんNGNG
>>63
CommandPatternですか
でもレシビだけあってもつくりようがないよ
材料をどうするのさ
0066デフォルトの名無しさんNGNG
>>65
個別のRecipeが知ってる。
0067デフォルトの名無しさんNGNG
ramen = Oyaji.make("ramen");
Kyaku.taste(ramen) => "マズッ"

0068デフォルトの名無しさんNGNG
んな無茶な、、、材料が在庫管理されてたらどうすんのさ
魔法のレシピじゃないんだから、、、
0069デフォルトの名無しさんNGNG
つか、ラーメンの製作過程をOOPすんなよ
0070デフォルトの名無しさんNGNG
Recipe.create()は無理だよな
レシピをもっと分析してみろよ

レシピは
材料の種類と分量
作成手順
から構成されるだろうね

レシピは、スープや麺のサブレシピから構成されることもあるから
入れ子にできた方がいいね
作成手順は順番にとれるといいので、イテレータ的にとれるといいね
同時に並行してやる作業もあるだろうから
作成手順の入れ子にできたほうがいいだろうね

まあいずれにしてもレシピの役割はここまでだね
材料集めとかはこのレシピを渡されたオブジェクトがやるだろ
0071デフォルトの名無しさんNGNG
recipe = oyaji.get_recipe(order);
zairyo = oyaji.get_zairyo(order);
ramen = oyaji.make(recipe, rezairyo);
return ramen;

でどうよ
0072デフォルトの名無しさんNGNG
どんな材料を使うか知ってるのはレシピだから
こうのほうがいいんじゃね?

recipe = oyaji.get_recipe(order);
zairyo = oyaji.get_zairyo(recipe);
ramen = oyaji.make(recipe, zairyo);
return ramen;
0073デフォルトの名無しさんNGNG
>>72
そのほうがいいな
0074デフォルトの名無しさんNGNG
大量の注文をさばくにはマルチスレッドにすればいい
0075デフォルトの名無しさんNGNG
バカだなぁ
そのまえにサービス(業)は最初からマルチスレッドだろ普通
0076デフォルトの名無しさんNGNG
Deshi登場?
0077デフォルトの名無しさんNGNG
パイプライン実装しないと。途中で注文キャンセルされた場合のフラッシュも含めて。
0078黒死犬 ◆EgxBlf8nvc NGNG
Oyaji oyaji = MazuiRamenya.enter();
PrintWriter ord = null;
try {
 ord = new PrintWriter(oyaji.getEar());
 ord.println("豚骨ラーメン");
 ord.println("オレンジジュース")
catch(MenuNotFoundException e) {
 ord.println("許して下さい");
} finally {
 ord.close();
}
0079デフォルトの名無しさんNGNG
>>77
なるほど、さすがだな
FiFOの伝票スタッカーは必要だな
0080デフォルトの名無しさんNGNG
例外はスローしろバカヤロ
0081デフォルトの名無しさんNGNG
>>77
メッセージキュー使って、JMSでアクセスしようze
0082デフォルトの名無しさんNGNG
>>75
実装のことを言ってるわけ
実装しなかったらラーメン屋の親父でさえシングルスレッドだ
0083デフォルトの名無しさんNGNG
>>82
いや、ぜったいとなりに母ちゃんはいるから
かならずマルチスレッド
0084デフォルトの名無しさんNGNG
>>82
アルバイト募集すればいいだろ?
0085デフォルトの名無しさんNGNG
ラーメンが一つ出来上がるまで注文を受けつけないこだわりのシングルスレッド親父
0086デフォルトの名無しさんNGNG
そもそも客は非同期でやってくるんだからイベントだろ
イベントハンドラ登録しとけ
0087デフォルトの名無しさんNGNG
店員が複数居るのはマルチプロセスだと思う。
店員が親父1人でも基本的には複数注文を受けられるからこれでマルチスレッド。
008887NGNG
そしてOSにあたるのが店長。
0089デフォルトの名無しさんNGNG
interface ShopListener {
public void customerEntered(ShopEvent ev);
public void customerOrdered(ShopEvent ev);
public void customerPayed(ShopEvent ev);
public void customerExited(ShopEvent ev);
}

public class Oyaji implements ShopListener {
public void customerEntered(ShopEvent ev) { System.out.println("いらっしゃい!!"); }
public void customerOrdered(ShopEvent ev)
{ make(ev.getOrder()); }
public void customerPayed(ShopEvent ev) { System.out.println(ev.getOrder().getPrice() + "円になります"); }
public void customerExited(ShopEvent ev) { System.out.println("まいど!!"); }
}
0090デフォルトの名無しさんNGNG
>>88
店長はオヤジが兼ねている場合が多いんじゃないだろうか。
OyajiはShopManagerも実装すべきでは。
0091デフォルトの名無しさんNGNG
スレ上がりっ放しだけどなんで?
見たところ糞スレにしか見えないんだが?
0092デフォルトの名無しさんNGNG
良スレが上がりっぱなりになるわけ(ry
0093デフォルトの名無しさんNGNG
かなりの確率で店長は人間だと思うので interface Human を実装してくれ。
0094デフォルトの名無しさんNGNG
経営者だが、店長なんて信用ならんので食券制にして
「チケット販売機」を追加してくれたまへ。
0095デフォルトの名無しさんNGNG
kappu_ra_men.insert(kona_su_pu);
kappu_ra_men.insert(kayaku);
kappu_ra_men.insert(oyu);
kappu_ra_men.wait(3);
this->eat(kappu_ra_men);
if(this->isDelicious()){
this->shout("ウマー");
}else{
this->shout("マズー");
}

このスレは、マ板にいくべきだと思いますが。
0096デフォルトの名無しさんNGNG
if(soup.taste() == マズー)
{
delete soup;
return EXIT_TODAY_HEITEN;
}

0097デフォルトの名無しさん05/03/16 20:41:37
らぁ麺屋の経営しみゅれぃしょんでっか?
0098デフォルトの名無しさん05/03/17 00:24:51
OOスレに来るのはバカばっか。
一人消しても、また一人・・・
おまえらスライムか?
なんでOOPL扱えないくせに、OOについて語ってるんだよ。
Cでポリモーフィズムできるようになってから出直して来い。
Vectorなどのコンテナークラスは、オブジェクトを格納できるわけだけど、
明らかにポインタを格納するバグはでないだろ?
それから、最近2chのレベル低くなりすぎ。
数値計算やアルゴリズム、データ構造それから
少なくても、2つ以上の言語についてしっかり知っとけ。
OSやらハードウエアに関する本も少しは読め。
数学の本も少し読んどけ。

サーバーサイドプログラミングはレベル低い。これ事実。
覚える事はいっぱいあるかもしれないけどレベル低いんだよ。
DB周りは特に勘違いしてる奴が多い。
SQL使えるからなんだっつーの?
SQLサーバー自作してから言え。
サーバーサイドの奴は、少し視野を広げろ。

最後に、仕事でプログラムやってるやつは
趣味でなんか作れ。
0099デフォルトの名無しさん2005/06/01(水) 19:25:24
それなりに面白い。あげ
0100デフォルトの名無しさん2005/06/02(木) 19:24:38
そろそろ地球シュミレーターはできまつか?
0101デフォルトの名無しさん2005/07/10(日) 22:22:56
気が早いんだけどさ、トッピングとか、麺固、とか微妙なカスタマイズや
限定メニューみたいなイベントに対応できる柔軟なパラメータ設計が大切
と考えていて気がついたんだけど、運用していくと馴染みの客が「いつもの」
って言ったりしても通じるDBは必要じゃないかな。
もっとも、sinasoba_sanoパターンならそういうのは一切不要か。
ここまで見た限りでは、oyajiはsanoである事を前提にしてる感じだけど。
■ このスレッドは過去ログ倉庫に格納されています