Author: maurundog

講義メモ

・p.266「インターフェイスの継承」から(※ 9章の練習問題も行います) 提出フォロー:ミニ演習 mini266.cs ・「アレンジ演習:p.265 interface05.cs」からIDaインターフェイスを除外して、動作を確認しよう 作成例 //ミニ演習 mini266.cs using System; interface IMas { //「です・ます」を示すインターフェイス     void show(int i); //抽象メソッド① } abstract class Base { //抽象クラス     public abstract void show(int i); //抽象メソッド② } class MyClass : Base, IMas { //抽象クラスを継承しインターフェイスを実装するクラス     void IMas.show(int i) { //抽象メソッド①のオーバライドなので「です・ます」         Console.WriteLine("iは{0}です", i);     }     public override void show(int i) { //抽象メソッド②のオーバライド         Console.WriteLine("iは{0}", i);     } } class interface05 {     public static void Main() {         IMas im; //インターフェイス型の変数         MyClass mc = new MyClass(); //抽象クラスを継承しインターフェイスを実装するクラスのオブジェクト         im = mc; //インターフェイス型の変数に代入して         im.show(5); //抽象メソッド①のオーバライドを実行         mc.show(5); //インターフェイス型の変数を経由しないと抽象メソッド②のオーバライドを実行     } } p.266 インターフェイスの継承 ・クラスの継承と同様に、インターフェイスをインターフェイスが継承できる ・これにより、インターフェイスの乱立を防ぐことができる ・また、あるインターフェイスで定義済の抽象メンバを、他のインターフェイスでも定義してしまうことも防止できる。 ・継承されるインターフェイスを基本インターフェイス、継承するインターフェイスを派生インターフェイスという ・定義書式: interface 派生インターフェイス : 基本インターフェイス {…} ・なお、継承なので、派生インターフェイスが複数の基本インターフェイスを持つことはできない p.266 interface06.cs //p.266 interface06.cs using System; interface IInterface1 { //基本インターフェイス     void setdatano(int…

Read the full article

今週の話題

今回トップは「ユニコーンオーバーロード(Switch)」GO! 【決算】ANYCOLORの3Q、2割の増収増益―コマース・ファンクラブ利用者は約120万人へ GO! 松竹とBrave groupがゲームメタバース事業で協業―『フォートナイト』内にオリジナルワールド制作、リアル連動イベントも GO! 「Snowflake」活用でパフォーマンス向上とコストダウンを同時に達成―『FF7 EC』開発のアプリボットがデータ分析基盤の構築事例を紹介【CAGC2024】GO! オンラインゲームにおけるハラスメントの放置はビジネス的損失をもたらす―米団体が無料レポート公開 GO!

前回のコメント

・1クラスで複数のインターフェイスを実装できるのが便利だと思いました  はい、便利ですので、是非、使いこなしてください。 ・interfaceについて理解が深まった  何よりです。

講義メモ 後半

p.263 複数のインターフェイスを実装する ・1クラスで複数のクラスを継承することはできない ・1クラスで複数のインターフェイスを実装することは可能 ・書式: class クラス名 : インターフェイス名①, インターフェイス名②, … {…} ・実装した全てのインターフェイスの抽象メンバのオーバライドが求められる ・例: interface Flyable { string HowToFly(); } //飛行体を示すインターフェイス interface Runable { string HowToRun(); } //走行体を示すインターフェイス class Dragon : Flyable, Runable { public string HowToFly() { return “腕力で飛ぶ”; } public string HowToRun() { return “脚力で走る”; } } p.263 interface04.cs 正誤 ・010行目「interface ISecond : IFirst」→「interface ISecond」 p.263 interface04.cs //p.263 interface04.cs using System; interface IFirst { //インターフェイス①の定義     void show(int x); //抽象メソッド① } interface ISecond { //インターフェイス②の定義     void show(int x, int y); //抽象メソッド② } class MyClass : IFirst, ISecond { //インターフェイス①と②を実装するクラス     public void show(int x) { //抽象メソッド①のオーバライド         Console.WriteLine("x = {0}", x);     }     public void show(int x, int y) { //抽象メソッド②のオーバライドでオーバーロードになる         Console.WriteLine("x…

Read the full article

講義メモ

・p.255「インターフェイスとは」から 提出フォロー:アレンジ演習:p.250 partial01.cs ・MyClassクラスの定義②を、別ファイル(partial02.cs)としてソース分割しよう 作成例:partial01.cs(分割元) //アレンジ演習:p.250 partial01.cs using System; partial class MyClass { //MyClassクラスの定義①     public int x; } class partial01 { //partial01クラスの定義     public static void Main() {         MyClass mc = new MyClass();         mc.x = 10;         mc.Show();     } } 作成例:partial02.cs(分割先) using System; //自動作成される partial class MyClass { //MyClassクラスの定義②     public void Show() {         Console.WriteLine("x = {0}", x);     } } 第10章 インターフェイス p.255 インターフェイスとは ・インターフェイスの元の意味は「異なる要素を関連付ける仕組み」「接合面」 ・C#では「継承関係のないクラスを関連付けられる仕組み」 ・例えば、画面上にドラゴンと戦闘機が飛び交うゲームにおいて、ドラゴンクラスと戦闘機クラスが継承関係になることは考えづらい。  しかし、双方のクラスが「飛行体」インターフェイスを持てば(実装すれば)、飛行体に含まれるものとしてまとめて扱える ・このように、クラスに基本クラスを定義する形に似た書式で、クラスにインターフェイスを実装できる p.255 インターフェイスの宣言 ・インターフェイスは抽象クラスに似た形で定義し、クラスを徹底的に抽象化したものになる ・具体的には、抽象メソッド、抽象プロパティ、抽象インデクサのみを持つことができるのがインターフェイス ・抽象クラスとは異なり、1つのクラスで複数のインターフェイスを実装できる(クラスの継承は1つのみ) ・これは例えば「飛行体でもあり、走行体でもあるマシン」の場合 ・インターフェイスの定義書式: interface インターフェイス名 {…} ・抽象メソッドの定義書式: 戻り値型 メソッド名(引数リスト); ・抽象プロパティの定義書式: 戻り値型 プロパティ名 { get; set; } ※getとsetのどちらかは省略可 ・抽象インデクサの定義書式: 戻り値型 this(インデックス型 インデックス); ・インターフェイスの定義例: interface Flyable { string HowToFly(); } //飛行体を示すインターフェイス p.256 インターフェイスの実装 ・クラスの継承と同じ書式で、インターフェイスの実装が可能 ・例: class Dragon : Flyable {…} ・クラスの継承とは異なり、複数のインターフェイスの実装が可能 ・例:…

Read the full article

今週の話題

今回トップは「ファイナルファンタジーVII リバース(PS5)」GO! 学生がもっと“eスポーツ”に触れる機会を―ヒューマンアカデミーが学校にゲーミングデバイスを寄贈するプランを展開する狙い GO! 広井王子氏が考えるeスポーツとゲームの未来、そして映画との深い繋がりとは―eスポーツ映画「PLAY! ~勝つとか負けるとかは、どーでもよくて~」公開直前インタビュー! GO! Unity、有償プランの値上げを日本でのみ実施―円安に伴う為替レート変更 個人向けの無料版であるUnity Personalに影響はありません GO! セガサミーのゲーム事業は新作軟調、過度な広告費で営業利益が急減【ゲーム企業の決算を読む】GO! 従業員の発言切っ掛けに議論が過熱。ゲームへの多様性導入巡り開発コンサル企業に海外で是非の声 GO! 【決算】gumi、3Qの売上高3割減、営業損失30億円―『アスタタ』不調やブロックチェーンゲーム宣伝費が重く GO!

前回のコメント

・partialキーワードがとても便利だなと思いました  確かに便利ですね。  長いプログラムを書く時や、チーム開発で活用できますので、是非、使いこなしてください。 ・抽象クラスを使いこなせるようになりたい  継承とインターフェイスの理解につがりますので、これも、是非、使いこなしてください。