M I C R O S O F T T E C H N O L O G Y A S S O C I A T E
受講者用学習ガイド
試験番号
98-361
MTA 認定試験の準備
MICROSOFT TE
C
HNOLOGY ASSOCIATE (MTA)
開発者志望の学生用学習ガイド
98-361
ソフトウェア開発に関する
執筆者 Tim McMichael (ソフトウェア開発と Windows 開発)。11 年にわ
たり高校でコンピューター サイエンスの教師を務めています。 現在は、アドバンスト プレースメント科目のコンピューター サ イエンス、.NET プログラミング、およびコンピューター ゲーム プログラミングを Raymond S. Kellis High School (アリゾナ州グ レンデール) で教えています。Peoria 統一学区における IT クラ スの教務主任でもあります。教師になる前は、データベース ア プリケーション開発者として数年間、仕事をしていました。コ ロラド州立大学で学士号を、アリゾナ州立大学で中等教育の教 育学修士号を取得しています。余暇は、XNA Game Studio で ゲームを製作し、小さな娘と過ごす時間を楽しんでいます。 MTA 試験レビュー キット シリーズの Windows 開発試験レ ビュー キットの著者でもあります。 Patricia Phillips (主執筆者、プロジェクト マネージャー)。 Patricia は、米ウィスコンシン州ジェーンズビルでコンピューター サイエンスを 20 年間教えていました。また、Microsoft の National K–12 Faculty Advisory Board に所属し、技術系教育者向け の Microsoft MainFunction Web サイトの編集に 2 年間携わりました。 ここ 5 年ほどは、Expression Studio の Web デザインや XNA ゲーム 開発など、K–12 カリキュラム開発やパイロット プログラムに関連 するさまざまな業務において、マイクロソフトに協力しています。 さらに執筆者および編集者として、コンピューター サイエンス、 Web デザイン、コンピューター的思考法などのトピックに関する 記事や学生用ワークブックを執筆しています。現在は、
Computer Science Teachers Association のニュースレターである Voice の編集を務めています。 このコンテンツは、受講者が個人的に使用することを目的として、使用対象および提供対象を学生に限定しています。 このドキュメントで使用しているいくつかの例は、説明のみを目的としており、架空のものです。実在する事物とは一切関係ありません。 Microsoft および http://www.microsoft.com/about/legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx (英語) に挙げられてい る商標は、Microsoft グループ企業各社の商標です。その他の会社名、ロゴ、製品名などはすべて、該当する各社の商標または登録商標 です。
© 2012 Microsoft Corporation. All Rights Reserved. このコンテンツは何ら保証のない現状有姿のままで提供され、明示または黙示にかかわ らず、Microsoft はいかなる責任も負わないものとします。
98-361
目次
はじめに. . . xi キャリア計画. . . xii 職種について. . . xiv 認定資格の価値. . . xvi 98-361 ソフトウェア開発に関する基本事項 プログラミングの中心的な概念の理解 . . . .3 1.1 コンピューターのストレージおよびデータの種類を 理解する. . . .5 1.2 コンピューターの決定構造を理解する . . . .7 1.3 繰り返し処理の適切な方法を判断する . . . .9 1.4 エラー処理を理解する. . . .11 オブジェクト指向プログラミングの理解. . . 13 2.1 クラスの基本を理解する. . . 15 2.2 継承を理解する. . . 17 2.3 ポリモーフィズムを理解する. . . 19 2.4 カプセル化を理解する. . . 21 第 1 章 第 2 章全般的なソフトウェア開発の理解. . . .23 3.1 アプリケーションのライフサイクル管理を理解する . . . 25 3.2 アプリケーションの仕様を解釈する. . . 27 3.3 アルゴリズムとデータ構造を理解する. . . 29 Web アプリケーションの理解. . . .31 4.1 Web ページ開発を理解する. . . 33
4.2 Microsoft ASP.NET Web アプリケーションの開発を理解する . . . 35
4.3 Web ホスティングを理解する. . . 37 4.4 Web サービスを理解する. . . 39 デスクトップ アプリケーションの理解. . . .41 5.1/5.2 Windows フォーム アプリケーションとコンソールベースの アプリケーションを理解する . . . .43 5.3 Windows サービスを理解する. . . 45 データベースの理解. . . .47 6.1 リレーショナル データベース管理システムを理解する. . . .49 6.2 データベースの照会方法を理解する. . . .51 6.3 データベースの接続方法を理解する. . . .53 第 3 章 第 4 章 x 目次 第 5 章 第 6 章
はじめに
TA は、学生の皆さんが、基礎となるテクノ ロジの概念を確認しながら興味を持って学び、 資格を取得することにより、情報技術 (IT) 分野の キャリアに活かしていただくための認定試験です。 MTA は、マイクロソフト テクノロジ認定資格シリー ズの最初のステップとして新しく設置された、入門 レベルの認定試験です。MTA を取得すると、皆さん の自信につながると共に、能力を客観的に示し、他 の人との差別化を図ることができます。 時間やリソースを浪費することなく IT 関連職の選択 肢を探る MTA 試験では、世界中の企業で現在求め られている主要なテクノロジに関する知識が問われ ます。ネットワーク管理者、ソフトウェア エンジニ ア、Web 開発者、データベース アナリストなどを目 指す皆さんにとって、MTA は、最初のステップとし て必ず役立つことでしょう。 競争に備える 現在の雇用情勢では、IT 分野でのわ ずかな投資が大きな効果をもたらします。MTA 認定 資格を取得することは、テクノロジ関連の学習にお いて中級レベルに進む場合にも、マイクロソフト認 定テクノロジー スペシャリスト (MCTS) 認定資格を 取得する場合にも、確かな基盤として活かされます。 大学院への進学を目指したり、IT キャリア計画を早 めに開始するうえでも役立ちます。 パワーを身に付ける MCTS 取得への足掛かりとして MTA を取得しておくと、テクノロジに取り組む姿勢 を示せるだけでなく、500 万人を超えるマイクロソフ ト認定プロフェッショナルのコミュニティとのつなが りを持つことができます。MTA 認定資格を取得して、 このコミュニティの人々と情報や知識を交換し ましょう。 この MTA 受講者用学習ガイドは、学生の皆さんが MTA 認定試験に備えるための学習ツールの 1 つです。 皆さんは、試験の対象範囲に含まれる主要トピックご とに、実際の状況を題材とした課題に取り組みます。 この学習ガイドの演習をやり遂げることで、MTA 試 験の合格が保証されるわけではありませんが、受験の ための準備がどの程度できているか自分で判断し、 受験日までに必要な知識を習得して、自信を持って 試験に臨むことができます。 テクノロジ分野でのキャリアを目指す皆さんが、確実 な第一歩を踏み出されることを願っています。 Victoria Pohto Victoria Pohto MTA 製品マーケティング マネージャーM
はじめに xiキャリア計画
イクロソフトのテクノロジを基に構築され たIT ソリューションまたはインフラストラ クチャを扱うには、ほとんどの場合、次に示す製品 のいずれかまたはすべてに関する知識が必要になり ます。これらは、「マイクロソフト スタック」と呼 ばれるものです。• Microsoft WindowsServer: データ センターまた は開発プラットフォームとして
• Microsoft SQL Server: データおよびビジネス インテリジェンス (BI) プラットフォームとして • Microsoft Visual Studio: アプリケーション
ライフサイクル管理ツールのスイートとして MTA はマイクロソフト テクノロジ認定資格の開始点 です。技術者への道を目指す皆さんに、勉強を続け てテクノロジの分野へ進むために不可欠な基礎知識 を提供します。 MTA の準備を行い、認定を受けることで、特定の専 門分野に限定したキャリア パスに膨大な時間や資金 を費やすことなく、テクノロジ分野でのさまざまな キャリア パスを探ることができます。自分に合った 進路が見つかったときは、さらに長期的なキャリア 計画を段階的に準備するうえで、Microsoft Learning の製品や認定資格が役に立ちます。 テクノロジ分野でのキャリア構築を開始したいという 気持ちが既にはっきりしている場合は、足掛かりとし て MTA の準備を行い、認定を受けることをお勧めしま す。MTA 認定資格を取得することで、IT の基本概念に 関する実用的な知識を確実に習得していることを証明 できます。これは、中級レベルの学習に進み、マイク ロソフト認定テクノロジー スペシャリスト (MCTS) な どの認定資格を取得する場合に不可欠となる知識です。 しかもマイクロソフト認定資格は業界で認められてい る資格であり、これを保持していることは、知識やス キルを高めるための自己投資と次のレベルに向かう自 信の証しでもあります。 MTA は、雇用主から「即戦力」と認められるための 「キャリア認定資格」ではなく、キャリア目標に向け た最初の一歩であり、インターンシップや大学の入学 審査時に差別化を図ることができる資格です。テクノ ロジ関連に絞って就職に備える場合は、ぜひ MCTS 認 定資格を取得しておいてください。これは、マイクロ ソフトの製品およびテクノロジのスキルが問われる中 級レベルの認定資格です。 次のページに、MTA 認定資格パスを図で示します。各 種の MCTS に挑戦する前に受験することが推奨されて いる MTA 試験がそれぞれ示されています。
マ
xii キャリア計画職種について
ャリア パスの選択は重大な決断であり、 必ずしも簡単ではありませんが、もう 1 人で悩む必要はありません。マイクロソフト では、学生の皆さんが IT 分野でのキャリアを追 求する場合にどのような選択肢と可能性がある のかわかるように、キャリア サイトを用意しま した。このサイトでは、学習のためのリソース や技術に詳しい学生のコミュニティをはじめ、 テクノロジ分野でのキャリアの準備に役立つさ まざまなコンテンツにアクセスすることができ ます。 さまざまな職種とマイクロソフト テクノロジとの対応付けを確認するには、 www.microsoft.com/learning/career/en/us/ career-org-charts.aspx (英語) を参照して ください。 データベース管理者 データベース管理者は、複数のプラット フォームおよび環境にまたがる重要な データベースの管理を担当します。ペー スの速い環境の中で、強力なチーム プレ イヤーとして成長していくことのできる仕事で す。ビジネス ニーズとセキュリティ要件を満た しスケーラビリティに優れた、複雑なデータ ベースを構築します。データベースの最適化、 メンテナンス、トラブルシューティングはもと より、アーカイブ作成、データ分散、および高 可用性を目的としたソリューションの設計にお けるエキスパートでもあります。 サーバー管理者 サーバー管理者は、組織において特に重要なテ クノロジに分類されるサーバーの実装と管理を 担当します。監視用およびプロファイリング用 のさまざまなツールを使用して、最適なレベル でシステムが動作するように、ネットワークの管理と システムの調整を行います。また、Active Directoryの エキスパートであると同時に、ネットワーク プロトコ ルやファイルおよびディレクトリのセキュリティにつ いても、深く理解しています。 コンシューマー サポート技術者 IT 分野のキャリアは、コンシューマー サポート 技術者として始めることもできます。正規の実 務経験は必要なくても、デスクトップ コン ピューター、ラップトップ、およびプリンター があるホーム ネットワーク環境でオペレーティング シ ステムのインストール、管理、およびトラブルシュー ティングを行うための知識が求められる可能性があり ます。コンシューマー サポート技術者は、ネットワー ク、ウイルス、悪意のあるソフトウェア、およびハー ドウェア サポートの問題も処理します。この職種は通 常、中小規模の組織で募集されます。キ
xiv 職種について職種について
Web 開発者 Web 開発者は、Web に生命を吹き込むため の動的プログラミング ツールおよび言語を使 用するエキスパートです。内部サイトまたは パブリック サイトで使用される対話型の Web サイト、アプリケーション、サービスを構築およ び統合するチームの一員として仕事をする場合も、独 立して仕事をする場合もあります。Web 開発者の役割 は、「機能させる」ことです。つまり Web アプリ ケーションを開発して各種のブラウザーでテストし、 必要に応じて機能強化や変更を行って、最適なユー ザー エクスペリエンスを実現することが仕事です。ま た、Web 開発者には、Web サイトやデータ ドリブン アプリケーションを設計する仕事や、効率的なクライ アント/サーバー ソリューションを決定するという仕 事もあります。ソフトウェア開発ライフサイクルにつ いての深い知識と、プロジェクトの状態、問題点、お よび解決策を伝達する能力が必要になります。 Windows 開発者 Windows クライアント開発者は、前提として、 Windows コードの最適化方法とバグの追跡方 法についての知識を持っている必要がありま す。ただし、MicrosoftVisual Studioや Microsoft .NET Framework を使用して、企業のサー バーおよびデスクトップ コンピューターで稼働する Windows ベースのアプリケーションを設計、開発、テ スト、および展開する方法についての知識も必要です。 特に、多様な Windows アプリケーション モデル と n 層アプリケーションを理解していることと、 オブジェクト指向プログラミング、アルゴリズム、 データ構造、およびマルチスレッドの操作方法を 知っていることが求められます。Windows 開発 者は、ソフトウェア エンジニアリング原理、ソ フトウェア ライフサイクル、およびセキュリ ティ原理について、深く理解しています。 新人開発者のためのその他のオンライン リソース: http://msdn.microsoft.com/beginner (英語) http://msdn.microsoft.com/rampup Imagine Cup Imagine Cup は、世 界中の学生が新しい スキルを学び、新し い友人を作り、さら には世界を変えることもできる、全世界の学生の ための技術コンテストです。コンテストには、ソ フトウェア デザイン、組み込み開発、ゲーム デ ザイン、デジタル メディア、Windows Phone 7 の部門があります。情熱あふれる頭脳明晰な若者 たちが、テクノロジの力を活かして、地球規模の 難題に挑みます。 www.imaginecup.com (英語) 職種について xv認定資格の価値
クノロジは、私たちの日常にかかわるすべ てに、何らかの役割を果たしています。マ イクロソフトの製品やテクノロジに関する知識やス キルの認定が開始して以来、20 年あまりで何百万も の人々が、知識、専門性、および資格を獲得し、あ りとあらゆる業種や分野において、自身のキャリア を高め、ビジネス ソリューションを改善し、さらに はイノベーションを実現してきました。今日、情報 技術 (IT) 分野の人事採用では、人材に備わっている スキルを見極めるための 1 つの判断材料として、マ イクロソフト認定資格などの専門的な資格を用いる ことが多くなりました。認定資格は、おびただしい 数の履歴書の中から、条件を満たす人材を簡単に見 分ける手段の 1 つになっています。 米国労働省の労働統計局 (BLS) がまとめた調査によ ると、IT プロフェッショナルの雇用は上向きの見通 しです。BLS では、コンピューター サポート スペ シャリスト、システム エンジニア、データベース管 理者、およびコンピューター ソフトウェア エンジ ニアの雇用に関して「2014 年まで、全職種の平均を 上回る速度で」増加する見込みであるとしています。 この調査から導くことができる重要なメッセージの 1 つは、国、業界、職種を問わず、雇用市場への通行証 として、情報通信技術 (ICT) のスキルが求められるとい うことです。情報技術は、時間、リソース、および勉 強の面で投資する価値のある領域であることは明らか です。中でも、勉強の過程で製品やテクノロジについ て学んだ専門知識を試す機会として、テクノロジ関連 の資格は重要な役割を果たします。 マイクロソフト IT 認定資格は、世界中の IT プロフェッ ショナル、開発者、インフォメーション ワーカーを対 象に、知識、役割、仕事の内容などに基づく多様な種 類が用意されています。そのどれもが、重要な IT 機能 を実行する能力の有無を客観的に証明します。世界中 の業界で認められているマイクロソフト認定資格は、 長期的なキャリア目標に到達するために最も有効な手 段の 1 つとして、今後もその価値を発揮し続けます。テ
xvi 認定資格の価値MTA 98-361
ソフトウェア開発
に関する基本事項
1
プログラミングの
中心的な概念の
理解
この章の内容 ■ 1.1 コンピューターのストレージおよびデータの種類を理解する ■ 1.2 コンピューターの決定構造を理解する ■ 1.3 繰り返し処理の適切な方法を判断する ■ 1.4 エラー処理を理解するヒント
目 的 プ ロ グ ラ ミ ン グ の 中 心 的 な 概 念 の 理 解 1.1コンピューターのストレージおよびデータの種類を理解する
シナリオ: Ken はサッカーのコーチで、選手データの管理に手間がかかりすぎると感じています。シーズンが始 まる前に、個人データを記入した用紙を各選手から提出してもらいましたが、必要とする情報を探すのに、い つも時間がかかってしまいます。 Cassie は頭のよい選手で、Ken は彼女がコンピューター プログラマであることを知っています。紙の束と挌闘 するのに疲れた Ken は、さまざまな記録を管理するプログラムを Cassie に作成してもらうことにしました。プ ログラムでは、各選手の氏名、背番号、年齢、性別、身長、体重、ゴール数、および出場試合数をデータとし て保存する必要があります。 Cassie はソフトウェアの開発を承諾しましたが、いくつかの決断を下す必要があります。1.
最も尐ないメモリで選手の年齢と背番号を記録するには、次のデータ型のうちどれを使えばよいですか。 a. short b. byte c. int2.
他のプログラムと同様に、ヒープに格納されるデータもスタックに格納されるデータもあります。 次のうち、ヒープに格納されるのはどれですか。 a. 選手の氏名 b. 身長 c. 年齢3.
以下の変数のうち、char として格納すべきものはどれですか。 a. 選手の氏名 b. 体重 c. 性別 重要: 文字列は 参照データ型です。 コンピューターのストレージおよびデータの種類を理解する 5の確認
得点
/3
解答
1.
背番号と年齢の記録に最も適しているデータ型は、次のとおりです。 b. byte。byte はメモリの使用量が最も尐なくてすみ、255 までの数字を保持できます。年齢と背番号に は十分な数でしょう。2.
ヒープに格納される選手のデータは、次のとおりです。 a. 選手の氏名。これは文字列として格納されます。3.
char として格納される変数は、次のとおりです。 c. 性別。M が男性 (male)、F が女性 (female) です。重要ポイント
• byte、integer、short、long などの整数データ型には、ゴール数などの整数を格納できます。 • float、single、double などの浮動小数点データ型は、選手の身長など、小数部のある数値も表すことがで きます。 • 値データ型はスタックに、参照データ型はヒープに格納されます。これは英語の最初の母音で覚えること ができます。Value (値) = stack (スタック)。Reference (参照) = heap (ヒープ)。詳 細 情 報
• http://msdn.microsoft.com/en-us/beginner/ff715351.aspx (英語)
• http://msdn.microsoft.com/ja-jp/library/ms173104.aspx • http://msdn.microsoft.com/ja-jp/library/asz1fz8b.aspx
ヒント
目 的 プ ロ グ ラ ミ ン グ の 中 心 的 な 概 念 の 理 解 1.2コンピューターの決定構造を理解する
シナリオ: Reina は好きなテレビ番組を録画するため、シンプルな DVR アプリケーションを作成しましたが、 コードにバグがあるようです。彼女は熱狂的なスポーツ ファンでもあり、スポーツ イベントの放送がある 場合は、それが他の好きな番組と重なった場合でも、スポーツ イベントを必ず録画したいと思っています。 好きな番組であってもスポーツ以外であれば、再放送は録画しません。ただし好きな番組の放送時間が他の録 画したい番組と重なっている場合に、その番組が再放送されるとわかっていれば、再放送を待って録画するこ とにしています。 残念なことに、彼女のプログラムは正しく動作していません。録画したくない番組が数多く録画され、録画し たい番組は再放送がある場合のみ録画されます。 Reina が作成した DRV プログラムの C# コード (行番号が追加されています) は以下のとおりです。 1: if (isSportsEvent) { 2: RecordShowNow(); 3: } 4: else { 5: if (!isConflict || !isRerun) { 6: RecordShowNow(); 7: }8: if (isConflict && isOnLater); { 9: RecordShowLater(); 10: } 11: }
1.
番組が重なっていても録画 されてしまう問題の原因と なっている行はどれですか。 a. 4 行目 b. 5 行目 c. 8 行目2.
8 行目はどのように書き直すべきですか。 a. if (isOnLater); { b. if (isConflict || isOnLater); {c. if (isConflict && isOnLater) {
3.
Reina は最初の制御構造の 中に、2 つの制御構造 (5 ~ 7 行目と 8 ~ 10 行目)を 置いています。このテクニック を何と呼びますか。 a. 親子関係 b. カプセル化 c. 入れ子 コードを記述す るときにインデント を使うのはプログラ ミング スタイルとして 適切ですが、ステート メントの実行には何の 影響もありません。 コンピューターの決定構造を理解する 7の確認
得点
/3
の確認得点
/3
解答
1.
番組が重なっていても録画されてしまう問題の原因となっている行は、次のとおりです。b. 5 行目。isConflict が true であっても、番組が再放送でない場合は、条件 OR ( || ) から true が返
されます。
2.
8 行目は以下のように書き直す必要があります。c. if (isConflict && isOnLater) {
行末のセミコロンには条件を終了させる働きがあるため、RecordShowLater() が常に呼び出されます。
3.
制御構造を他の制御構造の中に配置するテクニックは、次のように呼ばれます。 c. 入れ子重要ポイント
• if ステートメントのかっこ内のコードは、完全なブール型 (条件) 式である必要があります。例: • 「18 歳以上であれば、投票します」 if (age > 18) vote(); • 論理演算子を使用すると、2 つの式を結合することができます。例: • 「天気が雨または (OR) 雪の場合、私は家にいます」(論理 OR)if (isRaining | isSnowing) stayHome();
どちらかが true の場合、全体の式は true となり、stayHome が呼び出されます。
• 「前回コンピューターを購入してから 3 年以上経っており、かつ (AND)
コンピューターがセールになっている場合、新しいコンピューターを購入します」 (論理 AND)
if (computerAge > 3 & isOnSale) buyComputer();
両方が true の場合に全体の式が true となり、buyComputer が呼び出されます。
詳 細 情 報
• http://msdn.microsoft.com/en-us/beginner/bb308749.aspx (英語)
• http://msdn.microsoft.com/ja-jp/library/8y82wx12.aspx
ヒント
目 的 プ ロ グ ラ ミ ン グ の 中 心 的 な 概 念 の 理 解 1.3
繰り返し処理の適切な方法を判断する
シナリオ: Adriana は、Fourth Coffee のために POS (キャッシュ レジスタ) アプリケーションを作成しています。 彼女の役割は、パスワードで保護されたログイン システムを作成して、システムのセキュリティを確保するこ とです。ログイン ウィンドウとパスワード確認の作成は完了しましたが、これらを正しく実装できません。 Adriana はプロジェクト マネージャーから、ユーザーが間違ったログイン情報を 3 回入力したらシステムが ロックされるようなしくみが欲しいと言われました。Adriana が作成した最新のバージョンでは、ユーザーが 最初から正しいログイン情報を入力していても、システムが名前とパスワードの入力を 3 回求めます。また、 3 回入力した後は、その入力が正しくても、システムが必ずロックされます。
1.
Adriana は for ループを使用しています。これは、どのようなときに最も効果的ですか。 a. 繰り返しの回数がわかっており、実行中に変化する可能性が低いとき b. 繰り返しの回数はわかっているけれども、実行中に変化する可能性が高いとき c. 繰り返しの回数がわからないとき2.
Adriana のログイン システムでは、どの制御構造を使うのが最適ですか。 a. for ループ b. while ループ c. 再帰メソッド3.
do..while ループは何回実行されますか。 a. 0 回以上 b. 1 回以上 c. 2 回以上 この文脈におけ る「繰り返し」とは、 ループを通過する回数 です。 繰り返し処理の適切な方法を判断する 9の確認
得点
/3
解答
1.
for ループが最も適しているのは、次のような場合です。 a. 繰り返しの回数がわかっており、実行中に変化する可能性が小さいとき。2.
この場合、最も適しているのは次の制御構造です。 b. while ループ。実行する必要のあるループ回数が不明であり、ユーザーが入力したデータによって 決定されるような場合、最も適しているのは while (または do..while) ループです。3.
do..while ループが実行される回数は、次のとおりです。 b. 1 回以上。do..while ループと異なり、while ループは 1 回も実行されない可能性があります。重要ポイント
• for ループは、コントロール変数 (「カウン ター」とも呼ばれます) の値に基づいて、 ステートメントまたはステートメント ブ ロックを実行します。例:for (int i = 0; i < 10; i++) Console.WriteLine(i); 注: i (コントロール変数) はゼロに初期化 されています。ループは、i の値が 10 未 満である間、続行されます。各繰り返しの 後、i の値が増加します。 • while ループは、ブール式に基づいて、ス テートメントまたはステートメント ブロッ クを繰り返し実行します。while ループとは、 if ステートメントの繰り返しであると考え ることができます。例: int i = 0; while (i < 10) { Console.WriteLine(i); i++;} 注: このループは本質的に、for ループの例と同じも のです。ただし、ループを実行する前にブール式が評 価されるので、一度も実行されない場合もあります。 たとえば、i の初期値が 20 の場合、式は false と評価 され、ループは実行されません。 • do..while ループは while ループに似ていますが、 ブール式が評価されるのはコードの実行後です。例: int i = 0; do { Console.WriteLine(i); i++;} while (i < 10); 注: i の初期値が (0 ではなく) 20 で あっても、ブール式が評価される 前に、ループが 1 度実行され ます。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/32dbftby.aspx • http://msdn.microsoft.com/en-us/beginner/bb308747.aspx (英語) 10 第1 章:プログラミングの中心的な概念の理解
ヒント
ヒント
目 的 プ ロ グ ラ ミ ン グ の 中 心 的 な 概 念 の 理 解 1.4エラー処理を理解する
シナリオ: Lionel は美術学校の学生です。学費の足しにするため、学生課の記録管理部門でアルバイトをするこ とにしました。最初の仕事は、学生ごとに成績平均値 (GPA) を計算するプログラムを開発することです。成績 評価点の合計を履修単位時間数の合計で割れば成績平均値が求められることはわかっていたので、簡単な仕事 のように思えました。 ところが、新入生が履修単位時間を登録しなかった場合、Lionel が作成したプログラムは GPA を 0.0 と表示す るのではなく、クラッシュしてしまいます。このプログラムの C# コードは以下のとおりです (行番号を追加し ています)。 1: double GPA;2: GPA = totalGP / creditHoursAttempted; 3: Console.WriteLine(GPA);
1.
このプログラムに関してわかっている情報から判断して、このコードがスローする可能性が最も高い 例外は、次のどれですか。 a. DivideByZeroException b. NullReferenceException c. StackOverflowException2.
Lionel が例外を処理するために使用する構造として、適切なものは次のどれですか。 a. do-catch b. catch-exception c. try-catch3.
このプログラムの catch ブロックに含めた方がよいと考えられるものは、次のどれ ですか。 a. creditHoursAttempted = 1.0; b. totalGP = 4.0; c. GPA = 0.0; 例外とは、コン パイラによって検 出することができず、 プログラムの実行時に 発生するエラーです。 「ランタイム エラー」 とも呼ばれます。 エラー処理を理解する 11の確認
得点
/3
解答
1.
問題の原因となっている可能性が最も高い例外は、次のとおりです。 a. DivideByZeroException。学生の creditHoursAttempted がゼロの場合、例外が発生します。2.
例外を処理するために使用する構造は、次のとおりです。 c. try-catch3.
このプログラムの catch ブロックに含めた方がよいと考えられるものは、次のとおりです。 c. GPA = 0.0;。除算は既に実行されているので、計算に使用された値を変更することには、意味があり ません。重要ポイント
• 例外は、エラーに関する情報を含むオブジェクトです。 • 例外に関して開発者が使う用語に、「スロー」と「キャッチ」があります。例外が発生するこ とを、例外が「スロー」されたと言います。開発者は、プログラムで発生した (スローされた) 例外をすべて「キャッチ」する必要があります。 • try ステートメントは、プログラム内で実行しようとしていることが機能しない可能性がある (たとえば除算を実行する場合に、DivideByZeroException が発生する可能性がある)、というコ ンピューターへの警告であると考えることができます。 • catch ブロックは、例外が発生した場合に実行されます。このブロックは空にしておくこと もできますが、通常は catch ブロック内に「代替策」を記述します。Lionel の場合の代替案は GPA を 0.0 に指定することです。例外がスローされなければ、catch ブロックは スキップされます。 • try-catch 構造を使用しても、例外がスローされるのを防止できるわけではありませ んが、プログラムがクラッシュしないように開発時点で対策を用意することができ ます。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/ms173160.aspx • http://msdn.microsoft.com/en-us/beginner/bb308817.aspx (英語) 12 第1 章:プログラミングの中心的な概念の理解2
オブジェクト指向
プログラミングの
理解
この章の内容 ■ 2.1 クラスの基本を理解する ■ 2.2 継承を理解する ■ 2.3 ポリモーフィズムを理解する ■ 2.4 カプセル化を理解するヒント
目 的 オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 理 解 2.1クラスの基本を理解する
シナリオ: Tailspin Toys 社は、小さな子供向けにシンプルな犬型ロボットを開発しています。このロボット犬は USB ケーブルでコンピューターに接続され、子供たちはシンプルなアプリケーションを使用して、好みに応じ てこの玩具をパーソナライズすることができます。ハードウェアはほぼ完成しましたが、持ち主が犬型ロボッ トのカスタマイズに使用するソフトウェアの開発はまだです。Viktor は、このソフトウェアの開発を担当する ために採用されました。 Viktor はまず、ロボット犬を表すクラスを設計する必要があります。もちろん、クラスの名前は Dog としま す。このロボット犬、すなわち Dog クラスでは、犬の名前、年齢、性別を記録する必要があります。また、 吠える、歩く、尻尾を振る、および座るという動作も必要です。 Viktor が作成した C# コードは、現時点で次のような状態です。 public class Dog {public Dog() { name = "Hugo"; age = 1; gender = 'M'; } }
1.
次のうち、Dog クラスに含まれているプ ロパティはどれですか。 a. bark b. name c. Dog()2.
別の名前、年齢、または性別で Dog を 作成するために、Viktor が追加する必 要があるものは、次のどれですか。 a. 別のコンストラクター b. 別のプロパティ c. 作成イベント3.
新しい Dog を正しく作成できる C# のコード行は、次のどれですか。a. Dog hugo = Dog.new(); b. Dog hugo = new Dog(); c. new Dog hugo = Dog();
多くの場合、 クラスには複数の コンストラクターを 用意します。
の確認
得点
/3
解答
1.
プロパティは、次のメンバーです。 b. name2.
別の Dog を作成するために Viktor が追加する必要があるものは、次のとおりです。 a. 別のコンストラクター3.
Dog を作成する C# コードは、次のとおりです。b. Dog hugo = new Dog();
重要ポイント
• オブジェクトが現実世界の何かを表すことは、よくあります。このシナリオでは、Dog クラスはロボット 犬を表します。 • オブジェクト指向の設計で、動詞 (吠える、歩く、尻尾を振る、座る) は一般的に、メソッドに相当しま す。属性 (名前、年齢、性別など) は、プロパティまたはフィールドに相当します。 • フィールドは、クラス内で宣言される変数です。プロパティは、フィールド内に格納されたデータにアク セスするシンプルな手段を提供します。 • クラスは、青写真のようなものです。青写真が建築物の特性を定義するように、クラスはそのクラス 内のすべてのオブジェクトが持つプロパティとメソッドを定義します。 • 複数のオブジェクトを 1 つのクラスから作成 (インスタンス化) することができます。これは、多くの 建築物を 1 枚の青写真から建造できることに似ています。 • オブジェクトのインスタンス化 (作成) には、new というキーワードを使用します。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/ms173109.aspx • http://msdn.microsoft.com/ja-jp/library/x9afc042.aspx • http://msdn.microsoft.com/ja-jp/library/x9fsa0sw.aspx 16 第2 章:オブジェクト指向プログラミングの理解ヒント
目 的 オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 理 解 2.2継承を理解する
シナリオ: Tailspin Toys 社は犬型ロボット玩具の開発を進めています。初期の市場テストでは、顧客は犬型ロ ボットにもいろいろな犬種がある方がいいと思っていることがわかりました。この結果を受けて同社は、プー ドル、ブルドッグ、ゴールデン レトリーバーという 3 つの種類を製作することに決めました。将来的には別の 犬種を加えることも検討する予定です。多くの属性と動作はすべての犬種に共通しますが、一部の能力は犬種 ごとに異なる可能性があります。 このことは、子どもたちがロボット犬のカスタマイズに使用するソフトウェアを設計している Viktor にとって、 新たな課題となりました。 犬種ごとにすべてのコードを 1 回ずつ作成すると、合計 3 回になりますが、これは避けたいところです。また、 将来このプロジェクトに携わるプログラマが、元の設計と互換性のない新しい犬種を作成することも望ましく ありません。プードルは犬であり (a poodle "is a" dog)、他の犬種も犬なので、Viktor は継承を使うことに決め ました。1.
Viktor の新しい設計で、Poodle、Bulldog、GoldenRetriever はすべてどのクラスになりますか。 a. 抽象クラス b. 基本クラス c. 派生クラス2.
それぞれの犬種でコードを再利用し、将来作成される犬種の互換性を確保するには、 Dog クラスを何として宣言しますか。 a. 抽象 b. 派生 c. シール3.
次のうち、3 つの派生クラスが継承しないものはどれですか。 a. コンストラクター b. プロパティ c. メソッド 基本クラスは 「親」クラスまたは 「スーパークラス」とも 呼ばれます。派生クラス は「子」クラスまたは 「サブクラス」とも呼ば れます。 継承を理解する 17の確認
得点
/3
解答
1.
この設計では、3 つの犬種のクラスは次のとおりです。 c. 派生クラス2.
コードを再利用するには、Dog を次の種類のクラスとして宣言します。 a. 抽象。抽象クラスはインスタンス化できません。抽象クラスに実装されているメソッドは、すべての 派生クラスが共有します。3.
派生クラスが継承しないものは、次のとおりです。 a. コンストラクター重要ポイント
• 継承を使用すると、他のクラスで定義された動作を再利用、拡張、および変更して新しいクラスを作成で きます。 • 派生クラスは、コンストラクターとデストラクターを除いて、基本クラスのすべてのメンバーを継承し ます。• 継承が適切かどうか調べるには、「is a」テストを使用します。Viktor の場合、Poodle is a Dog、 Bulldog is a Dog、GoldenRetriever is a Dog です。したがって、継承を使用するのは適切です。しか し、タランチュラは Dog ではありません。したがって、Tailspin 社がもしクモ型ロボットを開発する場合 は、新しい基本クラスが必要です。そうしないと、クモが吠え、尻尾を振ることになります。 • 抽象クラスはインスタンス化できません。言い換えると、Tailspin 社が「犬」という 犬型ロボットを製作することはできないということです。犬型ロボットは、プードル、 ブルドッグ、ゴールデン レトリーバーのいずれかになります。 • インターフェイスは抽象クラスに似ていますが、「Is-a」のガイドラインを守る必要 はありません。Tailspin 社が実際にクモ型ロボットを作成することに決めた場合、 Viktor は犬とクモの両方に実装するインターフェイスを作成することができます。 たとえば、IRobotic のような名前のクラスになるかもしれません。 • C# では、コロンは継承を意味します。次の例を参照してください。 public class Poodle : Dog
詳 細 情 報
• http://msdn.microsoft.com/ja-jp/library/ms173149.aspx
• http://msdn.microsoft.com/ja-jp/library/ms173150.aspx
ヒント
目 的 オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 理 解 2.3
ポリモーフィズムを理解する
シナリオ: Tailspin Toys 社での Viktor の作業は順調に進んでいます。Viktor は、ロボット犬をカスタマイズでき るソフトウェアが顧客に受けることを確信しています。Viktor は、基本クラス設計に関する自分のアイデアに 満足しており、エンジニアとマーケティング担当者が変更を加えるのを止めてさえくれれば、細部の設計に着 手したいと思っています。
Viktor は、「吠える」といった一般的な動作はすべての犬に共通する反面、犬種によって鳴き声がかなり異な るということをわかっています。Poodle のために作成する Bark メソッドは、GoldenRetriever に実装す る Bark メソッドと異なっている必要があります。
Viktor は、Dog クラスでいくつかのメソッドを作成しました。以下は、C# で記述されたヘッダーです。 public void Bark() { … }
public void WagTail() { … } public void Walk() { … }
1.
派生クラスでこれらのメソッドをオーバーライドできるようにするには、3 つのヘッダーすべてに修飾子 を追加する必要があります。適切な修飾子は、次のどれですか。 a. new b. static c. virtual2.
派生クラスの中から Dog クラスの Bark メソッドを呼び出す方法として、 適切なものは次のどれですか。 a. Bark() b. Dog.Bark() c. base.Bark()3.
Bulldog クラスで Dog クラスの Walk メソッドをそのまま使用するには、どうすればよいですか。
a. Dog からコードをコピーして貼り付けることによって、Bulldog に Walk を実装する b. Bulldog に Walk を実装し、Dog の Walk メソッドを呼び出す
c. Bulldog に Walk を実装する必要はない メソッドをオー バーライドすること により、特定の派生ク ラスを、他の派生クラ スとは異なる実装にす ることができます。 ポリモーフィズムを理解する 19
の確認
得点
/3
解答
1.
3 つのメソッドに追加すべき修飾子は、次のとおりです。 c. virtual2.
Dog の Bark() メソッドを呼び出す方法として、適切なものは次のとおりです。 c. base.Bark()。基本クラスのメンバーにアクセスするには、base キーワードを使用します。3.
派生クラスでも基本クラスの Walk メソッドを使用できるようにするには、次のようにします。c. Bulldog に Walk を実装する必要はない。base.Walk() を呼び出す必要はありません。
派生クラスで継承したメソッドをオーバーライドしていなければ、自動的に基本クラスの メソッドが使用されます。
重要ポイント
• 重要なキーワード: • base: 派生クラス内から基本クラスのメンバーにアクセスするために使用します。 • virtual: メソッドの実装が派生クラス内でオーバーライドできるようになります。 • sealed: クラスに適用すると、他のクラスがこれを継承することができなくなります。メンバーに 適用すると、他のクラスがこのメンバーをオーバーライドできなくなります。 • new: 修飾子として使用すると、基本クラスのメンバーが隠れます。つまり基本クラスの実装は、 新しいメンバーに置き換わります。注: これは、オブジェクトをインスタンス化するために使用する new 演算子とは異なります。 • override: 継承したメンバーを置き換えるときに必要です。 • 次の C# コードは、Viktor がどのように派生クラスで Dog クラスのメソッドを置き 換えたかを示しています (Dog クラスに質問 1 の解答が適用されているものとします)。public override void Bark() { … } public override void WagTail() { … } public override void Walk() { … }
詳 細 情 報
• http://msdn.microsoft.com/ja-jp/library/ms173152.aspx
• http://msdn.microsoft.com/ja-jp/library/ms173153.aspx
ヒント
目 的 オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 理 解 2.4
カプセル化を理解する
シナリオ: Tailspin Toys 社の犬型ロボットをカスタマイズするソフトウェアの開発で、Viktor はすばらしい成果を 収めました。この功績が認められて、Viktor は昇進することになりました。しかし、残念なことに、これは彼 がこのソフトウェアの開発に最後まで携われないことを意味します。別の開発者がこのプロジェクトを引き継 ぐことになります。新しい開発者は初出勤日に、間違えてロボットの年齢を -237 に設定してしまい、プログラ ムをクラッシュさせてしまいました。 既に機能しているコードが新しい開発者に破壊されないように、Viktor は実装済みのコードを「ブラックボッ クス化」することにしました。これにより、新しい開発者は Viktor のコードを見ることなく、プロジェクトを 続行するために使用できます。また、Viktor は、変更を加える前に値を確認することで、ロボット犬にマイナ スの年齢が割り当てられないようにすることもできます。
1.
Viktor は、OpenMouth や CloseMouth など、Bark で使用するいくつかのメソッドを Dog クラスに実装しました。彼は、これらのメソッドが派生クラスから呼び出されないようにしようと考えてい ます。「ブラックボックス化」するメソッドに使用するアクセス修飾子として、適切なものは次のど れですか。 a. public b. protected c. private
2.
主要メソッドである Bark、Sit、Walk、および WagTail は、プロジェクト内 のどこからでもアクセスできるようにする必要があります。これらのメソッド に使用するアクセス修飾子として、適切なものは次のどれですか。 a. public b. protected c. private3.
次のうち、private 属性の読み取りまたは変更、あるいはその両方を行う手段 となるものはどれですか。 a. インターフェイス b. コンストラクター c. プロパティ C# と Visual Basic で は、プロパティはイン スタンス変数に「getter」 と「setter」(「アクセ サー」と「ミューテー ター」とも呼ばれます) の 機能を提供します。 カプセル化を理解する 21の確認
得点
/3
解答
1.
「ブラックボックス化」するメソッドに使用するアクセス制限として、適切なものは次のとおりです。 c. private2.
主要メソッドが使用するアクセス制限レベルとして、適切なものは次のとおりです。 a. public3.
private 属性の読み取りまたは変更、あるいはその両方を行う手段となるものは、次のとおりです。 c. プロパティ重要ポイント
• このような「ブラックボックス化」は、カプセル化と呼ばれることがよくあります。 • カプセル化の原則に沿って、インスタンス変数 (属性またはフィールド) には、可能な限り制限度の高いア クセス レベルを割り当てます。すなわち、インスタンス変数は可能な限り private に設定します。 • 基本クラスのインスタンス変数は、多くの場合 protected として定義されます。この場合、派生クラス (Poodle クラスなど) はデータにアクセスできますが、プログラムの他の部分からはこのデータにアクセス できません。 • データへのアクセスを制限する重要な理由の 1 つは、データが変更されたときにその有効性を確保するこ とです。新しい開発者が age 属性を負数に設定しようとしていましたが、これと同様に、gender 属性で は green という値を受け入れることはできません。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/ms173121.aspx • http://msdn.microsoft.com/en-us/beginner/bb308891.aspx (英語) 22 第2 章:オブジェクト指向プログラミングの理解3
全般的なソフトウェ
ア開発の理解
この章の内容 ■ 3.1 アプリケーションのライフ サイクル管理を理解する ■ 3.2 アプリケーションの仕様を解釈する ■ 3.3 アルゴリズムとデータ構造を理解するヒント
目 的 全 般 的 な ソ フ ト ウ ェ ア 開 発 の 理 解 3.1
アプリケーションのライフ
サイクル管理を理解する
シナリオ: Nupur は、Blue Yonder Airlines 社の新しい予約システムを開発するプロジェクトで、プロジェクト マ ネージャーに任命されました。彼女は、開発者チームを率いて、アプリケーション ライフ サイクルのすべての 段階を担当します。
Napur のチームは、同社の各部署のマネージャーとの会議で、会社のニーズと、だれもが必要とする基本機能 について、意見を聞きました。アプリケーションは Web ベースとし、Blue Yonder 社の顧客がオンラインでフ ライトの検索、予約、およびチェックインを行えるようにします。 会議の後、開発者のチームの各メンバーは、自分の視点でプログラムの概要設計を開始しました。実際のコー ディングはまだですが、UML を使用してプロジェクトのクラスやオブジェクトを書き出していきます。概要設 計は完成していませんが、必要な処理の実現方法がかなり具体的になってきています。Napur は、各チーム メ ンバーがプログラムの異なる部分を担当できるように、作業を分割したいと考えています。
1.
社内の各マネージャーとの Napur の会議は、アプリケーション ライフ サイクルのどの段階ですか。 a. 設計 b. 開発 c. 計画2.
このシナリオでの UML の用途は、次のどれですか。 a. コードを書き始めていないため、時間の無駄である b. 別々のコンポーネントが完成時に 1 つのソフトウェアとして動作することを 保証するために役立つ c. チームがどのようにソフトウェアを作成するのか、クライアントが 理解するために役立つ3.
チーム メンバーがコードを作成するときに、Napur は各クラスを個別にテストする ように指示するつもりです。この戦略を何と呼びますか。 a. 負荷テスト b. 単体テスト c. 統合テスト アプリケーションのライフ サイクル管理を理解する 25 開発者は、アプ リケーション ライフ サイクル管理の段階や フェーズに異なる名前を 付けることがあります が、基本プロセスは同じ です。の確認
得点
/3
解答
1.
社内の各マネージャーとの Napur の会議は、アプリケーション ライフ サイクルで次のように呼ばれる 段階です。 c. 計画。アプリケーション ライフ サイクルの計画段階 (構想段階とも呼びます) では、クライアントの ニーズや要件を収集します。この場合は、社内の各部署がクライアントです。2.
Napur の UML の用途は次のとおりです。 b. 別々のコンポーネントが完成時に 1 つのソフトウェアとして動作することを保証するために役立つ。 実際の開発がどのように行われるかについては、クライアントはおそらく興味がないでしょう。3.
各コンポーネントを個別にテストする場合、この戦略を次のように呼びます。 b. 単体テスト重要ポイント
• アプリケーション ライフ サイクル管理 (ALM) の各フェーズは、計画、設計、開発、テスト、および 保守です。 • ALM プロセスは反復的つまり繰り返しです。アプリケーションを配置した後、新しい問題や機能の追加 要求が発生して、このプロセスが最初から繰り返されることも尐なくありません。 • 実際にコードを記述する作業 (開発) は、全体のプロセスのごく一部です。 • UML は、統一モデリング言語の略語です。UML を使用すると、アプリケーションのさまざまなコンポー ネントの仮想モデルを作成することができます。 • プログラマの多くは、オブジェクト指向プログラミングの「クラス図」に慣れ親しんで います。これは通常、UML 図として描画することができます。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/fda2bad5%28VS.100%29.aspx • http://msdn.microsoft.com/ja-jp/library/dd409393%28VS.100%29.aspx 26 第3 章:全般的なソフトウェア開発の理解ヒント
目 的 全 般 的 な ソ フ ト ウ ェ ア 開 発 の 理 解 3.2
アプリケーションの仕様を解釈する
シナリオ: Ari は Contoso Pharmaceuticals 社でのインターンシップを終了したところです。同社の従業員が使う ソフトウェアの開発に参加していたのです。上司が彼の働きぶりにたいへん満足したため、Ari は、Contoso 社 の次世代アプリケーションの開発チームの一員として採用されました。チームが新しいアプリケーションを開 発している間も、社員が古いシステムを継続して使用できるように、新しいアプリケーションは新たにゼロか ら構築することに決定しました。 同社は現在 1000 を超える製品を作っており、この数は今後も増える予定です。新しいアプリケーションでは、 同社の在庫だけでなく、基本的な出荷と受注の詳細を記録します。社員はこのアプリケーションで、製品カタ ログを検索し、製品の説明、画像、在庫数、価格など、製品の詳細を確認します。
1.
これらの要件を満たすのは、どのようなアプリケーションですか。 a. コンソール アプリケーション b. データベース アプリケーション c. Windows サービス アプリケーション2.
同社のコンピューターは大半が古く、RAM とハード ドライブの容量が限られていますが、 すべてがイントラネットに接続しています。Ari はどうすれば、すべてのシステムで新しい バージョンを動作させることができますか。 a. C などの古いプログラミング言語でプログラムを記述する b. Windows 98 などの古いオペレーティング システム上でプログラムを開発する c. プログラムを Web アプリケーションにし、ブラウザーからアクセスできるように する3.
Ari の上司は、実際に何が開発されていて、それをどのように使うのかを各部署の マネージャーに理解してもらいたいと思っています。そのため、実際の機能を見 せるのではなく、新しいアプリケーションの外観を示すためのデモンストレー ションを準備するように Ari に指示しました。これを何と呼びますか。 a. モックアップ b. アルファ テスト c. ダイアグラミング アプリケーションの仕様を解釈する 27 アプリケーショ ンの仕様は、クライ アントやユーザーの ニーズを開発者が理 解するために役立ち ます。の確認
得点
/3
解答
1.
最適な種類のアプリケーションは、次のとおりです。 b. データベース アプリケーション。このプログラムでは、大量の在庫レコードを格納、表示、および更 新する必要があります。2.
古いシステムでソフトウェアを実行できるようにするための対策は、次のとおりです。 c. プログラムを Web アプリケーションにする。ある程度最近の Web ブラウザーがインストールされた コンピューターであれば、問題なく Web アプリケーションにアクセスできます。3.
実際の機能を持たないデモンストレーションは、次のように呼ばれます。 a. モックアップ。モックアップでは何も実行できませんが、クライアントにユーザー インターフェイス の外観を見せることができます。重要ポイント
• アプリケーションの仕様には、解決が必要な問題を説明し、開発者に要件を伝えるという役割があります。 • 仕様に含まれる要件は通常、クライアントやユーザーの観点から記述されています。開発者はこれを読み 取り、プログラム設計に変換する必要があります。 詳 細 情 報 • http://msdn.microsoft.com/ja-jp/library/5b13a7k4.aspx • http://msdn.microsoft.com/en-us/library/aa984771%28VS.71%29.aspx (英語) 28 第3 章:全般的なソフトウェア開発の理解ヒント
目 的 全 般 的 な ソ フ ト ウ ェ ア 開 発 の 理 解 3.3アルゴリズムとデータ構造を理解する
シナリオ: Cassie は先日、サッカー コーチの Ken のために、チーム メンバーのデータを管理するソフトウェア プログラムを作成することを約束しました。この選手名簿アプリケーションを使用すれば、コーチは容易に選 手の個人情報を管理し、単純な統計を作成できるようになるはずです。 Cassie は最初の計画を完了し、プログラム内ですべてのデータをどのように編成するかを決断する段階に来て います。このアプリケーションでは数多くの選手のデータを管理し、ユーザーが個人データを検索および抽出 できるようにしようと思っています。これに加えてコーチのために、全選手の背番号順のリスト、姓をアル ファベット順に並べた電話番号リスト、チームの得点上位者のリストなど、いくつかのレポートを印刷できる ようにしておく必要があるでしょう。1.
次のデータ構造のうち、選手データの管理に適したものはどれですか。 a. スタック b. 配列 c. リンク リスト2.
次のうち、Cassie が選手をアルファベット順に並べるために使用できる方法は どれですか。 a. バイナリ検索 b. キュー c. バブル ソート3.
後入れ先出し方式のみを使用して選手を取得したい場合、Cassie が使用できる データ構造はどれですか。 a. スタック b. キュー c. リンク リスト アルゴリズムとデータ構造を理解する 29 データ構造とは、 データを整理し、 データに対してさまざ まな操作を実行するた めに使用するクラス です。の確認
得点
/3
解答
1.
Cassie が使用すべきデータ構造は、次のとおりです。 b. 配列。配列は、ユーザーが検索を実行するときなど、順不同でデータにアクセスする必要があるプロ グラムに適しています。2.
Cassie が特定の順序でデータを簡単に並べ替えることができる方法は、次のとおりです。 c. バブル ソート3.
レコードの追加と取得に後入れ先出し方式 (LIFO) を使用するのは、次のデータ構造です。 a. スタック重要ポイント
• 一般的なデータ構造: • 配列: すべてが同じ型のデータ値のリストです。配列名とインデックス式から構成される式を使用して、 任意の要素を参照できます。 • リンク リスト: ポインターによって接続された、データ構造のノードや要素のリストです。リンク リ ストは、リストの途中に数多くの挿入を必要とする集合体に最適です。このような挿入を行っても、 リンク リストでは、ポインターを 2 つ更新するだけで済みます。 • キュー: 要素を挿入したときと同じ順序でしか要素を取り出すことができないデータ構造です。つまり、 先入れ先出し方式 (FIFO) の制限を受けます。 • スタック: 要素を挿入したときと逆の順序でしか要素を取り出すことができないデータ 構造です。後入れ先出し方式 (LIFO) とも呼ばれます。 • ソート アルゴリズムでは、データ要素の集合を、特定の順序で並べ替えます。各要素の 1 つ以上のキー値に基づいて並べ替えることもあります。一般的なソート アルゴリズム には、バブル ソート、選択ソート、挿入ソートなどがあります。 詳 細 情 報 • http://msdn.microsoft.com/en-us/vcsharp/aa336800.aspx (英語) • http://msdn.microsoft.com/en-us/library/ms379570.aspx (英語) • http://msdn.microsoft.com/ja-jp/library/aa288453.aspx 30 第3 章:全般的なソフトウェア開発の理解4
Web アプリケーショ
ンの理解
この章の内容
■ 4.1 Web ページ開発を理解する
■ 4.2 Microsoft ASP.NET Web アプリケーションの開発を理解する ■ 4.3 Web ホスティングを理解する
ヒント
目 的 Web アプリケーションの理解 4.1Web ページ開発を理解する
シナリオ: 小さなダンス スタジオを経営する Tanja は、新しい顧客を呼び込むと共に、既存顧客とのコミュニ ケーションを改善する方法を模索しています。Web デザインについてはよく知らないので、数年前に、生徒の 1 人がスタジオの Web サイトを作成してくれました。その生徒が大学に進学したので、Web サイトの保守につ いては、ボランティアで力を貸してくれる数人の生徒に頼っています。その結果、Web サイトはまとまりも一 貫性もないものになってしまいました。ボランティアの生徒たちがそれぞれ、違う色やフォントを使ったため、 素人が作った Web サイトのように見えます。Tanja は自分で Web サイトを修正できないので、甥の Maxim に頼むことにしました。Maxim はページの作成 を始める前に、Web ページに使用される技術について、せめて基本的な部分は Tanja に理解してほしいと思っ ています。
1.
情報を Web ブラウザーでどのように表示するか指定するために「タグ」を使用するのは、どの技術 ですか。 a. HTML b. XML c. JavaScript2.
CSS を使用することの主要な利点を示しているのは、次のどれですか。 a. 対話的な Web ページを作成できる b. ビデオや音楽などのマルチメディア クリップを Web サイトに含めることができる c. Web サイト内の複数のページを書式設定する作業が単純化される3.
JavaScript とは何ですか。 a. さまざまなフォント設定を管理するマークアップ タグ b. Java アプリケーションを実行するためのサーバー側技術 c. Web ページを対話的にするためのクライアント側技術 Web ページ開発を理解する 33 CSS はCascading Style Sheet の