第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」

Slides:



Advertisements
Similar presentations
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
Advertisements

復習ー I (General Review I) クラスとオブジェクトの概念 Concepts of class and object クラスの宣言とオブジェクトの生成 Definition of a class and creation of an object コンストラクタとメソッドのオーバーロー.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
アルゴリズムとプログラミング (Algorithms and Programming)
AndroidとiPhoneに おける開発比較
創造工学設計I 電子情報工学科4年(前期) 8回目 (04/6/2015) 担当 古山彰一 ac
Applet 岡部 祐典 鈴木 敬幸.
Objective-Cでシューティングゲーム を作成してみる
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
プログラミング基礎I(再) 山元進.
Javaのための暗黙的に型定義される構造体
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
3-5 クラス図の関係その3 福本研究室 神田 祐輔.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
3-3 クラス図の関係その2.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第10回 オブジェクト指向 情報工学科 篠埜 功.
社会人学習講座 「Javaプログラミング概論」
オブジェクト指向入門.
ピカチュウによる オブジェクト指向入門 (新版)
計算機プログラミングI 第8回 2002年12月5日(木) メソッドとクラス (教科書6章) クイズ インスタンスメソッド インスタンス変数
RMI ソフトウェア特論 第6回 /
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
プログラミング演習3 第2回 GUIの復習.
overload / override / overwrite の違いについて
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
変数のスコープ クラス クラス変数 すべてのメソッドの外側でstaticで定義
ソフトウェア工学 知能情報学部 新田直也.
第4回JavaScriptゼミ セクション2-8 発表者 直江 宗紀.
アルゴリズムとプログラミング (Algorithms and Programming)
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
第11週:super/subクラス、継承性、メソッド再定義
プログラミング演習3 第2回 GUIの復習.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
プログラミング言語論 第12回 オブジェクト指向 情報工学科 篠埜 功.
プログラミング言語論 第13回 オブジェクト指向 情報工学科 篠埜 功.
Java8について 2014/03/07.
変数,式,関数,クラス,コンストラクタ, クラスの属性アクセス,メソッド,親クラ スからの継承
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
第8回放送授業.
独習Java ・ 5.7  静的変数と静的メソッド ・ 5.8  ローカル変数と変数のスコープ  11月20日    小笠原 一恵.
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
サブゼミ第7回 実装編① オブジェクト型とキャスト.
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
18. Case Study : Imperative Objects
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
C言語講座第5回 2017 構造体.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」 古川 拓弥

継承とは あるクラスの定義を引き継いで新しく定義する サブクラスはスーパークラスの機能をすべて利用可能 サブクラスで行うこと 継承の元となるクラス:スーパークラス(superclass) 新しく作るクラス:サブクラス(subclass) サブクラスはスーパークラスの機能をすべて利用可能 サブクラスで行うこと 新しいメソッドの追加 新しいインスタンスの追加 スーパークラスのメソッドを別の定義で置き換える 上書き(override)

継承の概念 スーパークラス 継承 継承 サブクラス サブクラス 変数 x :新しく追加 :上書き(override) method1 クラスA 継承 継承 サブクラス サブクラス 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC サブクラスではスーパークラスのインスタンス変数やメソッドにアクセス可能 インスタンス変数,メソッドの宣言は新たに付け加えるもののみを記述

クラスBはクラスDに対してはスーパークラスとなる 継承の概念 変数 x :新しく追加 :上書き(override) method1 method2 クラスA 継承 継承 スーパークラス 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC 継承 サブクラス 変数 x method1 クラスBはクラスDに対してはスーパークラスとなる method2 method3 クラスD

継承の概念 ルートクラス 継承 継承 継承 ルートクラス それ以上スーパークラスを持たないクラス 変数 x :新しく追加 :上書き(override) method1 method2 クラスA 継承 継承 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC 継承 変数 x それ以上スーパークラスを持たないクラス ルートクラス method1 method2 method3 クラスD

すべてのクラスはルートクラスを継承しなければならない 継承関係の宣言 インターフェース部 実装部 @interface クラス名 : スーパークラス { //インスタンス変数の宣言 ・・・ } //メソッドの宣言 @end すべてのクラスはルートクラスを継承しなければならない NSObject @implementation クラス名 //メソッドの定義 ・・・ @end

継承するクラスがないときにはNSObjectを継承する 継承の例 インターフェース部 実装部 @interface Car : NSObject { char *name } - (void)printName; @end 継承するクラスがないときにはNSObjectを継承する @implementation Car - (void)printName{ name = “カローラ”; printf(“車の名前は%sです\n”, name); } @end

クラス定義とヘッダファイル インターフェース部は1つのヘッダファイルとして作成 #import <Foundation/NSObject.h> @interface Alpha : NSObject { ・・・ } - (void)doSomething @end #import “Alpha.h” @implementation Alpha - (void)doSomething{ ・・・ } @end Alpha.h Alpha.m #import “Alpha.h” @interface Beta : Alpha { ・・・ } @end #import “Beta.h” @implementation Beta ・・・ @end Beta.h Beta.m #import “Beta.h” @interface Gamma : Beta { ・・・ } @end #import “Gamma.h” @implementation Gamma ・・・ [self doSomething]; @end Gamma.h Gamma.m

メソッドの呼び出し [self method] self クラス内の他のメソッドの呼び出し 継承 継承 selfという名前にメッセージを送る クラスA クラスB クラスC method1 method2 method3 method1 method1 method2 method2 method3 [self method1] [self method2] method3 インスタンス化 インスタンス化 メッセージ処理を行っているインスタンス自身 self メッセージ送信 メッセージ送信

メソッドの呼び出し [super method] super スーパークラスのメソッドの呼び出し 継承 継承 クラスA クラスB クラスC method1 method2 method3 method1 method1 method2 method2 method3 [super method1] [super method2] method3 継承した親クラスのメソッドを使うことを表す super