タグ

ブックマーク / www.aerith.net (4)

  • オブジェクト指向

    オブジェクト指向が広まり始めた頃は、オブジェクト指向のメリットとして、夢のような話がたくさん喧伝された。だが現実には、オブジェクト指向を取り入れても、あらゆる問題が解決する訳ではない。むしろ、オブジェクト指向を導入することで、深刻なデメリットがもたらされることもある。 それでも、高い技術力をもって、大規模で複雑なソフトウェアを開発するチームでは、オブジェクト指向はたいへん有力であり、必須のスキルである。 ................ 続きを読む

  • 良いシーケンス図を描くための発想法

    UMLの図法の中でも、シーケンス図はとても良く使われるものの1つです。クラス構成が複雑なアプリケーションでも、メソッドの呼び出しを順に辿っていき、それをシーケンス図に描いてみると、処理の流れが理解できたりします。 しかし、シーケンス図は、単に処理や手続きの順序を示すためのものではありません。メソッドが多かったり、呼び出す順序が決まっているからと言って、単に、呼び出されるメソッドを順に並べただけのシーケンス図を描いてしまうことがありますが、それはあまり意味がありません。 ここでは、良いシーケンス図を描くための考え方を紹介します。 処理の流れを図で示そう ここでは例として、画面Aで入力した値を、画面Bで表示するだけの、単純なアプリケーションを考えてみましょう。 このアプリケーションはとても単純ですが、きちんと設計書を書いておくことにしましょう。 ソフトウェアの仕組みは、図で示すと分かりやすくな

  • カプセル化とは何か 〜仕様と実装は別物です〜

    オブジェクト指向の特徴の1つに、カプセル化があります。カプセル化によって、利用者は、中身の詳しい作りを知らなくても、その振る舞いだけを知っていれば、クラスを利用することができます。 カプセル化によって、クラスの仕様と実装は、まったく別物となります。振る舞いの仕様を満たしていれば、中身をどのように実装しようとも自由です。そのため、時には仕様と実装が大きくかけ離れたクラスができることもあります。 ここでは、具体的な例を見ながら、クラスの仕様と実装の違いを考えてみましょう。 いつもソートされたリストを作ろう ここでは例として、「いつもソートされたリスト」を作ってみましょう。 C++言語のテンプレートライブラリやJava言語に用意されているリストは、データが追加された順に並んでいます。ここでは、追加された順に関係なく、いつもデータがソートされているリスト、というものを作ってみます。 「いつもソート

  • クラス設計の考え方

    ソフトウェアの開発において、クラスの設計は、大切なポイントの1つです。どのようなクラスや関数を作るのか。ソフトウェアのデザインは、それによって決まります。 現在のソフトウェア工学で主流となっているのは、オブジェクト指向の考え方です。開発言語も、C++Javaといったオブジェクト指向言語が広く使われています。しかし、いくらオブジェクト指向言語を使って開発していても、クラス設計の考え方が誤っていれば、まったくオブジェクト指向的でないソフトウェアができてしまいます。 貴方が、あるちょっとした機能の追加を頼まれたとしましょう。さて、いくつのクラスや関数を作れば良いのでしょうか。また、そのクラスや関数の名前は、どのように付ければ良いのでしょうか。貴方なら、どのように考えを進めて、クラスや関数を設計していきますか? ここでは、ワイルドカードを使った文字列の検索を例に、クラス設計をする際の考え方を紹介

  • 1