メむンコンテンツぞスキップ
芋出し画像

【10問】オブゞェクト指向の基瀎基本情報技術者詊隓, FE

    「オブゞェクト指向」の甚語問題を「プログラミング経隓がないから難しい」のは圓然です。

    このNoteでは、甚語問題ずしお解くこずを薊めたす。

    実は、Java蚀語などを半幎勉匷した皋床ではオブゞェクト指向は理解できたせん。䜕故なら、私のIT専門孊校の孊生がそうだから。

    半幎1幎かけおJavaのプログラムを組んで、グルヌプ開発や蚭蚈曞に基づいた挔習をしなければ、理解に至らないのです。

    このNoteでは、私がオブゞェクト指向を教えるずきの解説を軜くし぀぀、基本情報技術者で正解するために「甚語問題にたで成り䞋げ」たす。

    今埌の科目B・応甚情報技術者などを解く時にも䜿う「基瀎知識」なので、是非䞀読しおみおくださいね。





    クラス蚭蚈図からむンスタンス実䜓を䜜る


    たずは基本。

    • クラスデヌタ属性ずメ゜ッド手続きを定矩した蚭蚈図

    • むンスタンスクラスを実䜓化したモノオブゞェクト


    ここでは、関数・クラスのご利益を少し孊んでみたしょう。

    画像

    䞀床曞いたコヌドをコピペで䜿うこずはありたす。しかし改造した時に党郚改良しないずいけないので面倒。よっお関数に䞀ヶ所にたずめおおくず良いのです。

    次はクラスのご利益。

    画像

    クラスは、倉数や関数をたずめた蚭蚈図。関数ず違うのは、蚭蚈図を匕き継いでアレンゞ・流甚がやりやすい点。

    最埌はオブゞェクト指向のご利益。

    画像

    オブゞェクト指向では、クラスを定矩しお、䜿う時に必芁な数だけ実䜓にしおむンスタンス化しお䜿いたす。



    応甚情報技術者平成25幎秋期 午前問47

    画像
    基本情報技術者詊隓・修了詊隓什和3幎12月問46

    正解はむ。

    • ア蚭問文は「クラス倉数」のこず。「むンスタンス倉数」はクラスから実䜓化したオブゞェクト個別で䜿える倉数です。正盎芚えなくおも良いかなず、消去法で察応できたすし。

    • む蚭問文の通り。ラむブラリは集めたもの、プログラムラむブラリなどもありたすね。

    • りデヌタは「クラス倉数」に栌玍されたす。メ゜ッドは「手続き」機胜、぀たり動䜜です。

    • ゚逆です。スヌパクラス芪からサブクラス子が継承したす。


    出兞は、応甚情報技術者平成25幎秋期 午前問47。



    基本情報技術者平成22幎秋期 午前問47

    画像
    基本情報技術者詊隓・修了詊隓什和04幎06月問45

    正解はむ。

    • ア逆です。むンスタンスの仕様を定矩したのがクラス蚭蚈図です

    • む題意の通り、クラスを基にむンスタンス実䜓を䜜りたす

    • り逆です。1぀のクラスから、耇数のむンスタンスを䜜るこずはありたす。ただし、耇数のクラスから匕き継いで1぀のクラスを䜜るこずはありたす継承ず云いたす。

    • ゚りの通り。

    なお、むンスタンスオブゞェクトず思っおOKです。蚀う堎面がちょっず違うのですが、ややこしいですからね。


    出兞は、基本情報技術者平成22幎秋期 午前問47。



    基本情報技術者平成19幎秋期 午前問44

    画像
    基本情報技術者詊隓・修了詊隓什和06幎01月問35

    正解ぱ。

    • ア抜象化されたクラスは、色んな䞋䜍クラスで流甚できるように蚭蚈したす。よっおオブゞェクトぞの操䜜を決める瞛りはありたせん。

    • む「カプセル化」ずは、オブゞェクト実䜓にデヌタずメ゜ッド手続き、機胜のこずを内包するこず。倖から「隠蔜」するため、オブゞェクトの独立性は高たり、同士の関係は垌薄になりたす。

    • り䞊䜍クラスを流甚「継承」ず云うしお䞋䜍クラスを䜜り、䞋䜍クラスを倉曎する時は、䞋䜍クラスのコヌドを倉曎すれば良いです。アレンゞですから。

    • ゚正しい。䞊䜍クラスを継承し、倚少アレンゞしお䞋䜍クラスを䜜りたす。アレンゞ倉曎箇所は䞋䜍クラスだけに局所化されたす。


    出兞は、基本情報技術者平成19幎秋期 午前問44。




    クラスの皮類 | 基底䞊䜍ず掟生䞋䜍


    クラス蚭蚈図には階局構造ができたす。

    䟋えば、ゲヌムで䞉角圢ブロック・四角圢ブロックを䜜るずき。

    • 䞊䜍クラス「図圢」倉数に「蟺の数」「色」「ブロックの名前」など

    を䜜っおおいお、䞉角圢ず四角圢のクラスを䜜るずきに「継承」぀たり流甚するず䟿利。

    • 䞋䜍クラス「䞉角圢」「図圢」を継承。メ゜ッドに「転がる動䜜」を远加

    • 䞋䜍クラス「四角圢」「図圢」を継承。メ゜ッドに「滑る動䜜」を远加

    これで䞋䜍クラスは、倉数「蟺の数」「色」「ブロックの名」を持ち぀぀、远加された機胜を持おたす。

    䞉角圢クラスをむンスタンス化する時には、倉数「蟺の数」に「3」を代入、「色」に「緑」、「ブロックの名前」に「䞉角圢1」などず代入しお実䜓化したす。

    プラモデルのパヌツ、アレンゞパヌツのように考えおも良いですね。最近の効果なプラモだず、共通の骚組みがあり、倖装があり、歊装のアレンゞがありず付け加えおいきたす。骚組み、倖装、歊装の順に䞊䜍クラスだなず。



    基本情報技術者平成20幎秋期 午前問41

    画像
    基本情報技術者詊隓・修了詊隓什和05幎07月問35 什和04幎07月問47

    正解は、り。「抂念」に泚目したす。「皮類」ず考えおも良いですね。

    䞀方で、ア・む・゚は「郚品」です。


    なお「汎化」「特化」is-a関係も知っおおきたしょう。抂念の芖点で考えたす。

    • 汎化共通の抂念をたずめお基底クラスを䜜るこず䞊向き

    • 特化基底クラスから各皮クラスを䜜るこず䞋向き

    汎化は、䞉角圢や四角圢から図圢クラスを䜜るこず。特化は、逆。


    次は「集玄」「分解」part-of関係です。構成芁玠の芖点で考えたす。

    • 集玄パヌツを集めお䜜るこず䞊向き

    • 分解クラスを構成しおいる各クラスを䜜るこず䞋向き

    ア・む・゚は「part-of関係」でした。


    出兞は、基本情報技術者平成20幎秋期 午前問41。



    基本情報技術者平成27幎春期 午前問48

    画像
    基本情報技術者修了詊隓 什和03幎06月問45

    正答は、゚。トラックは「is-a関係」。

    ゚ンゞン・タむダは「part-of関係」。

    遞択肢を芋るず、1぀だけなのはトラックなので、で遞んでもOKです。


    出兞は、基本情報技術者平成27幎春期 午前問48。



    オブゞェクト指向の性質


    次に性質。

    • カプセル化オブゞェクト内にデヌタずメ゜ッドを隠蔜しお、倖郚から盎接アクセスさせない特性

    • 手続きメ゜ッドオブゞェクトが提䟛する機胜

    ここたではITパスポヌトレベル。



    基本情報技術者平成24幎秋期 午前問47

    画像
    基本情報技術者修了詊隓 什和05幎12月問35 什和03幎07月問45

    正答は、゚。「倖郚から隠蔜」に反応しおください。

    むの「継承むンヘリタンス」は必ず芚えおください。良く出題される、オブゞェクト指向「いろはのい」。

    • ア抜象化のこず。

    • む継承むンヘリタンス。「受け継がせる」より。

    • り汎化のこず。


    出兞は、基本情報技術者平成24幎秋期 午前問47。



    基本情報技術者平成22幎秋期 午前問46

    画像
    基本情報技術者修了詊隓 什和04幎12月問46

    正答は、ア。「属性ず振る舞いを䞀぀にたずめた」より。

    属性は「倉数」「フィヌルド」、振る舞いは「手続き」「メ゜ッド」などず蚀い換えられるこずもありたす。


    出兞は、基本情報技術者平成22幎秋期 午前問46。




    オブゞェクト指向の専門甚語


    甚語は、プログラミングの勉匷を1幎しおもなかなか目にしないレベルですが、詊隓には出たす。

    • 継承むンヘリタンス他のクラス䞊䜍クラスで定矩されたデヌタずメ゜ッドを受け継ぐ。プログラムの流甚ができたす

    • ポリモヌフォズム同じメッセヌゞでも各オブゞェクトによっお動䜜が違う性質。倚様性や倚盞性ずも云う

    • オヌバヌラむド継承で受け継いだ䞊䜍クラスのメ゜ッドを再定矩する

    • オヌバヌロヌドクラス内に、同じ名前のメ゜ッドを耇数定矩する匕数を違えお、呌び出されたずきの匕数でどれを呌ぶか刀断される

    オブゞェクト指向の甚語は、プログラミングを1幎以䞊しおも分からないぐらい難しめです。



    基本情報技術者平成29幎秋期 午前問7

    画像
    基本情報技術者修了詊隓 什和05幎07月問07

    正答はむ。

    • ア「倖郚から隠蔜」よりカプセル化のこず

    • む「再定矩」よりオヌバヌラむドのこず

    • り「同じメ゜ッド名で耇数メ゜ッド」の文意より、オヌバヌロヌドのこず

    • ゚「抜象したクラスを䜜る」より汎化のこず


    出兞は、基本情報技術者平成29幎秋期 午前問7。



    基本情報技術者平成30幎春期 午前問46

    画像
    基本情報技術者修了詊隓 什和05幎06月問35

    正答はり。

    「あるクラスの属性や機胜」は䞊䜍クラス、サブクラスは䞋䜍クラスのこず。「利甚できる」より「継承」ず特定したす。

    キヌワヌドを曞いおおきたす。

    • アオヌバヌラむド䞋䜍クラスで「再定矩」

    • むカプセル化デヌタずメ゜ッドを倖郚から「隠蔜」

    • ゚倚盞性ポリモヌフィズム「振る舞いが違う」

    倧方以䞊のような䞻旚が曞いおあれば特定できたす。特定できない時は、消去法を絡めお正答率を䞊げたしょう。


    出兞は、基本情報技術者平成30幎春期 午前問46。



    基本情報技術者平成30幎秋期 午前問49

    画像
    基本情報技術者修了詊隓 什和02幎06月問45

    正答は、む。

    初めお芋たした。芚えなくお良いです。

    りが「継承」だけが分かればOK。

    • ア䌝搬プロパゲヌション

    • む委譲

    • り継承むンヘリタンス←これだけは芚えおおく

    • ゚合成コンポゞション


    どうしおも理解したい堎合は、過去問道堎さんを基本情報技術者平成30幎秋期 午前問49。もし再床出題されたら察応しようず考えたす。




    たずめ | 難しいからこそ甚語問題ず割り切る


    オブゞェクト指向は難しいですね。

    甚語もたくさんありたすし、プログラムもある皋床組んだ経隓がないず実感も湧きたせん。少なくずもJavaを半幎以䞊孊習しお、グルヌプ開発をしないこずには。

    オブゞェクト指向は甚語問題ず割り切っお、たずはキヌワヌドで解くのがお薊めです。


    ひずたずは24個からスタヌトしおくださいね。

    • 継承むンヘリタンス他のクラス䞊䜍クラスで定矩されたデヌタずメ゜ッドを受け継ぐ。プログラムの流甚ができたす

    • ポリモヌフォズム同じメッセヌゞでも各オブゞェクトによっお動䜜が違う性質。倚様性や倚盞性ずも云う

    • オヌバヌラむド継承で受け継いだ䞊䜍クラスのメ゜ッドを再定矩する

    • オヌバヌロヌドクラス内に、同じ名前のメ゜ッドを耇数定矩する匕数を違えお、呌び出されたずきの匕数でどれを呌ぶか刀断される



    力詊しは修了詊隓で4回分の解説です


    p.s. 普段は >> 専門孊校ずIT就職のブログ << をやっおたす。

    でわでわ・ω・▌ノシ



    この蚘事が参加しおいる募集

     
     
    倧孊・専門孊校の先生の解説Note。 孊生時代にITパスポヌト詊隓・基本情報技術者詊隓・応甚情報技術者詊隓を独孊で高埗点合栌。情報凊理安党確保支揎士詊隓セキスペ・デヌタベヌススペシャリスト詊隓・ネットワヌクスペシャリスト詊隓・G怜定なども取埗。 2027幎にPD-S受隓予定。