2013年10月24日木曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の13章(新しいクラスの作成と既存クラスの変更), 13.2(クラスの作り方)、13.3(インスタンス変数)、13.4(newとinitialize)、13.5(ベビードラゴンゲーム)、13.6(練習問題の続き)、オレンジの木をDartで解いてみる。

その他参考書籍

オレンジの木

コード

sample.dart

class OrangeTree{
  // privacyに関する注意点
  // Dartはclass levelではなく、library levelでprivacyを管理
  // なのでアンダースコアを変数名の先頭に付加しても同一library内ならclassの外からアクセス可能
  // 他のlibraryからは、アンダースコアが先頭に付加された変数名にはアクセスできない。
  int _height,
      _orange_count,
      _age;
  bool _alive;
  OrangeTree(){
    _height = 0;
    _orange_count = 0;
    _age = 0;
    _alive = true;
    print('オレンジの木を植えました。');
  }
  int height(){
    return _height;
  }
  void oneYearPasses(){
    _orange_count = 0;
    print('1年が経過しました。');
    if (_alive){
      if(_age == 10){
        _alive = false;
        _height = null;
      }
      if (_alive){
        _age += 1;
        _height += 1;
        if(_age >= 5){
          _orange_count = _age - 4;
        }
      }
    }
  }
  int countTheOrange(){
    return _orange_count;
  }
  String pickAnOrange(){
    if (_alive){
      if (_age >= 5){
        if (_orange_count > 0){
          _orange_count -= 1;
          return 'とてもおいしいオレンジの実が採れました。';
        }
        return '今年はもう採れる実がありません。';
      }
      return '樹齢${_age}なので、まだ採れる実がありません。';
    }
    return '木はもう枯れているので実はとれません。';
  }
}

void main(){
  var ot = new OrangeTree(),
      n = 11,
      i,
      j,
      m;
  for (i = 0; i < n; i += 1){
    ot.oneYearPasses();
    m = ot.countTheOrange();
    print('高さ: ${ot.height()} 実の数: ${m}個');
    for (j = 0; j < m + 1; j += 1){
      print(ot.pickAnOrange());
    }
  }
}

入出力結果

オレンジの木を植えました。
1年が経過しました。
高さ: 1 実の数: 0個
樹齢1なので、まだ採れる実がありません。
1年が経過しました。
高さ: 2 実の数: 0個
樹齢2なので、まだ採れる実がありません。
1年が経過しました。
高さ: 3 実の数: 0個
樹齢3なので、まだ採れる実がありません。
1年が経過しました。
高さ: 4 実の数: 0個
樹齢4なので、まだ採れる実がありません。
1年が経過しました。
高さ: 5 実の数: 1個
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: 6 実の数: 2個
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: 7 実の数: 3個
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: 8 実の数: 4個
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: 9 実の数: 5個
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: 10 実の数: 6個
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
とてもおいしいオレンジの実が採れました。
今年はもう採れる実がありません。
1年が経過しました。
高さ: null 実の数: 0個
木はもう枯れているので実はとれません。

0 コメント:

コメントを投稿