Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オブジェクト指向(超基礎)

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for kuma kuma
August 28, 2021

 オブジェクト指向(超基礎)

Avatar for kuma

kuma

August 28, 2021
Tweet

More Decks by kuma

Other Decks in Programming

Transcript

  1. ~クラスがない世界~ 変数A = ~ ; 変数B = ~; メソッドA(){ …

    }; 変数C = ~; メソッドA; // 呼び出し 佐藤さん 田中さん 例えばこんな共同開発をしていたとする 変数A = ~~; 変数B = ~; メソッドA(){ … }; 鈴木さん
  2. ~クラスがない世界~ 変数A = ~ ; 変数B = ~; メソッドA(){ …

    }; 変数C = ~; メソッドA; // 呼び出し echo 変数A; 佐藤さん 田中さん こんなことが起きる 変数A = ~~; 変数B = ~; メソッドA(){ … }; 鈴木さん 問題点① 佐藤さん作のメソッドA を呼び出したい →鈴木さん作のメソッド Aを呼び出してしまうか もしれない 問題点② 佐藤さん作の変数Aを呼 び出したい →鈴木さん作の変数Aを 呼び出してしまうかもし れない
  3. ~クラスがある世界~ Class Sato { 変数A = ~ ; 変数B =

    ~; メソッドA(){ … }; } Class Tanaka extend Suzuki { 変数C = ~; メソッドA; // 呼び出し } 佐藤さん 田中さん Class Suzuki { 変数A = ~~; 変数B = ~; メソッドA(){ … }; } 鈴木さん メリット② 継承により呼び出したい クラスのメソッドを的確 に指定 メリット① 機能ごとに「まとめる」 ことができて可読性UP 加えて、他クラスからの 介入を阻止して「隠す」 ことができる
  4. ~クラスがある世界~ Class Sato { 変数A = ~ ; 変数B =

    ~; メソッドA(){ … }; } Class Tanaka extend Suzuki { 変数C = ~; メソッドA; // 呼び出し } 佐藤さん 田中さん Class Suzuki { 変数A = ~~; 変数B = ~; メソッドA(){ … }; } 鈴木さん メリット② 呼び出したいクラスのメ ソッドを的確に指定 ・メリット Satoクラスの変数A, Bを Tanakaクラスで使いたい! →extendsするだけ! 可読性向上&開発効率UP!
  5. ~ポリモーフィックな世界~ Class User extends Order { メソッドB(){ … }; }

    Class Order { メソッドB(引数){ … } } Userクラス(親) Orderクラス(子) Class Guest extends Order { メソッドB(){ … }; } Guestクラス(親) ①メソッド呼び出し。 引数によって呼び出すクラス を指定 Class Withdrawed extends Order { メソッドB(){ … }; } Withdrawedクラス(親) … メソッドB(引数){; … } Testクラス ②指定したメソッド呼び出し 共通メインルーチン