$30 off During Our Annual Pro Sale. View Details »

Androidアプリを作る 第3回

nonylene
November 06, 2016

Androidアプリを作る 第3回

nonylene

November 06, 2016
Tweet

More Decks by nonylene

Other Decks in Technology

Transcript

  1. "OESPJEΞϓϦΛ࡞Δ

    ,.$OPOZMFOF
    +BWBޙ൒

    View Slide

  2. ࣗݾ঺հ
    w OPOZMFOF ͷʹΕΜ

    w ,.$ճ
    w SPPU

    View Slide

  3. ࣗݾ঺հ
    w OPOZMFOF ͷʹΕΜ

    w εϚϗΞϓϦͱ͔
    w 5XJUUFS(JU)VCFUD
    w IUUQOPOZMFOFIBUFOBCMPHKQ

    View Slide

  4. ͜Μ͹Μ͸

    View Slide

  5. ࠓ೔΍Δ͜ͱ
    +BWBޙ൒
    Ϋϥεܧঝ
    ܕม׵ʢΩϟετʣ
    ͦͷଞ+BWBͷจ๏

    View Slide

  6. +BWBޙ൒

    View Slide

  7. Ϋϥεܧঝ

    View Slide

  8. Ϋϥεܧঝͱ͸
    w ͋ΔΫϥεΛݩʹͯ͠৽͍͠ΫϥεΛ࣮૷
    w ॲཧͷڞ௨ԽɾΫϥεͷ֊૚Խ

    View Slide

  9. Ϋϥεܧঝͱ͸
    w +BWBͰ͸ҰͭͷΫϥε͔Β͔͠ܧঝͰ͖ͳ͍
    w ʢଟॏܧঝ͸Ͱ͖ͳ͍ʣ

    View Slide

  10. ਌Ϋϥε
    ࢠΫϥε
    ܧঝ
    ʢεʔύʔΫϥεʣ
    ʢαϒΫϥεʣ

    View Slide

  11. ࣮ྫ

    View Slide

  12. ·Μ͕λΠϜ͖ΒΒ

    ͰֶͿΫϥεܧঝ

    View Slide

  13. ·Μ͕λΠϜ͖ΒΒͱ͸
    w ๕จࣾͷίϚϚϯΨࢽͦͷ࢞ຓࢽ܈
    w ·Μ͕λΠϜͷएऀ޲͚ͱ͍͏Ґஔ͚ͮ

    View Slide

  14. ·Μ͕λΠϜ͖ΒΒୡ
    w ·Μ͕λΠϜ͖ΒΒ
    w ·Μ͕λΠϜ͖ΒΒΩϟϥοτ
    w ·Μ͕λΠϜ͖ΒΒ."9
    w ·Μ͕λΠϜ͖ΒΒϑΥϫʔυ
    w ·Μ͕λΠϜ͖ΒΒϛϥΫ

    View Slide

  15. ·Μ͕λΠϜ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    Ωϟϥοτ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ."9
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϑΥϫʔυ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϛϥΫ

    View Slide

  16. ίϛοΫࡶࢽ
    ·Μ͕λΠϜ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    Ωϟϥοτ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ."9
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϑΥϫʔυ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϛϥΫ

    View Slide

  17. ίϛοΫࡶࢽ
    ࡶࢽ
    ·Μ͕λΠϜ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ·Μ͕λΠϜ
    ͖ΒΒ
    Ωϟϥοτ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ."9
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϑΥϫʔυ
    ·Μ͕λΠϜ
    ͖ΒΒ
    ϛϥΫ

    View Slide

  18. ComicMagazine
    Magazine
    BaseMangaTimeKirara
    MangaTimeKirara,
    MangaTimeKiraraCarat,
    MangaTimeKiraraMax, etc…

    View Slide

  19. Magazine
    BaseMangaTimeKirara
    MangaTimeKirara,
    MangaTimeKiraraCarat,
    MangaTimeKiraraMax, etc…
    ( MangaTimeKirara ͕͋ΔͨΊ )
    ComicMagazine

    View Slide

  20. .BHB[JOFΫϥε࣮૷
    w λΠτϧɾδϟϯϧɾձࣾɾ߸਺Λอ࣋
    w આ໌༻จষ΋ग़ྗ͢Δ

    View Slide

  21. .BHB[JOFΫϥε࣮૷
    * Magazine.java
    class Magazine {
    private String title;
    private String genre;
    private String company;
    private int number;
    public Magazine(String title, String genre, String company,

    int number) {
    this.title = title;
    this.genre = genre;
    this.company = company;
    this.number = number;
    }
    public String getInfoText() {
    return company + " ͷ " + title + number + "߸";
    }
    }

    View Slide

  22. $PNJD.BHB[JOF࣮૷
    w δϟϯϧ͸ອըͩͱ෼͔͍ͬͯΔ
    ˠ δϟϯϧͷҾ਺͸ෆཁ

    w ·ͣ͸ී௨ʹ࣮૷

    View Slide

  23. $PNJD.BHB[JOF࣮૷
    * ComicMagazine.java
    class ComicMagazine {
    private String title;
    private String genre = "ອըࡶࢽ";
    private String company;
    private int number;
    public ComicMagazine(String title, String company, int number) {
    this.title = title;
    this.company = company;
    this.number = number;
    }
    public String getInfoText() {
    return company + "ͷ" + title + number + "݄߸";
    }
    }

    View Slide

  24. $PNJD.BHB[JOF࣮૷
    ComicMagazine magazine =
    new ComicMagazine("·Μ͕λΠϜ͖ΒΒMAX", "๕จࣾ", 1);
    String text = magazine.getInfoText();

    View Slide

  25. .BHB[JOFܧঝ
    w MagazineΛܧঝ͢ΔΑ͏ʹมߋ͢Δ
    • extends Magazine

    View Slide

  26. .BHB[JOFܧঝ
    w Magazine͔Βϝϯόม਺ϝιουFUDʜ
    ͕Ҿ͖ܧ͕ΕΔ
    w ίϯετϥΫλ͸Ҿ͖ܧ͕Εͳ͍
    w ࢠΫϥε಺ͰݺͿඞཁ͕͋Δ
    Magazine ComicMagazine
    titile / author …
    getInfoText()
    ਌ ࢠ

    View Slide

  27. .BHB[JOFܧঝ
    w Magazine͔Βϝϯόม਺ϝιουFUDʜ
    ͕Ҿ͖ܧ͕ΕΔ
    w ࢠΫϥε಺෦͔Βݟ͑Δ͔Ͳ͏͔͸ผ
    w privateͳ΋ͷ͸ݟ͑ͳ͍
    Magazine ComicMagazine
    titile / author …
    getInfoText()
    ਌ ࢠ

    View Slide

  28. .BHB[JOFܧঝ
    * CodeMagazine.java
    class ComicMagazine extends Magazine {
    public ComicMagazine(String title, String company,
    int number) {
    super(title, "ອըࡶࢽ", company, number);
    }
    }
    Magazine Λܧঝ

    View Slide

  29. .BHB[JOFܧঝ
    * CodeMagazine.java
    class ComicMagazine extends Magazine {
    public ComicMagazine(String title, String company,
    int number) {
    super(title, "ອըࡶࢽ", company, number);
    }
    }
    Magazine ʹఆٛ͞ΕͨίϯετϥΫλΛݺͿ
    ※ genre Λৗʹ “ອըࡶࢽ” ͱ͍ͯ͠Δ

    View Slide

  30. .BHB[JOFܧঝ
    ComicMagazine magazine =
    new ComicMagazine("·Μ͕λΠϜ͖ΒΒMAX", "๕จࣾ", 1);
    String text = magazine.getInfoText();
    Magazine ͷϝιου͕࢖͑Δ

    View Slide

  31. #BTF.BOHB5JNF,JSBSB࣮૷
    w ͖ΒΒୡڞ௨ͷ৽͍͠ػೳΛ࡞Γ͍ͨ
    w දࢴΛ০Δ࡞඼Λ؅ཧ͍ͨ͠

    ˠ ৽͍͠ม਺ coverTitle
    ͕ඞཁ
    ˠ ৽͍͠Ϋϥε BaseMangaTimeKirara

    View Slide

  32. * BaseMangaTimeKirara.java
    class BaseMangaTimeKirara extends ComicMagazine {
    private String coverTitle;
    public BaseMangaTimeKirara(String title,
    String coverTitle, int number) {
    super(title, "๕จࣾ", number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    }
    #BTF.BOHB5JNF,JSBSB࣮૷
    coverTitle ม਺Λఆٛ

    View Slide

  33. * BaseMangaTimeKirara.java
    class BaseMangaTimeKirara extends ComicMagazine {
    private String coverTitle;
    public BaseMangaTimeKirara(String title,
    String coverTitle, int number) {
    super(title, "๕จࣾ", number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    }
    #BTF.BOHB5JNF,JSBSB࣮૷
    ComicMagazine ΫϥεͷίϯετϥΫλΛݺͿ

    View Slide

  34. * BaseMangaTimeKirara.java
    class BaseMangaTimeKirara extends ComicMagazine {
    private String coverTitle;
    public BaseMangaTimeKirara(String title,
    String coverTitle, int number) {
    super(title, "๕จࣾ", number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    }
    #BTF.BOHB5JNF,JSBSB࣮૷
    coverTitle ʹ୅ೖ͢Δ
    ※ ComicMagazine ʹ͸ coverTitle ͸ͳ͍

    View Slide

  35. * BaseMangaTimeKirara.java
    class BaseMangaTimeKirara extends ComicMagazine {
    private String coverTitle;
    public BaseMangaTimeKirara(String title,
    String coverTitle, int number) {
    super(title, "๕จࣾ", number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    }
    #BTF.BOHB5JNF,JSBSB࣮૷
    getCoverTitle() ϝιουΛఆٛ
    ※ ComicMagazine ʹ͸ getCoverTitle() ͸ͳ͍

    View Slide

  36. #BTF.BOHB5JNF,JSBSB׬੒
    BaseMangaTimeKirara kirara =
    new BaseMangaTimeKirara(“·Μ͕λΠϜ͖ΒΒMAX”,
    "͖Μ͍ΖϞβΠΫ", 1);
    String cover = kirara.getCoverTitle();
    String text = kirara.getInfoText();

    View Slide

  37. .BOHB5JNF,JSBSB."9࣮૷
    w ͖ΒΒ."9Ͱ͸આ໌จΛม͍͑ͨ
    w ࠓʮ๕จࣾͷ·Μ͕λΠϜ͖ΒΒ."9݄߸ʯ
    w ."9

    ʮ·Μ͕λΠϜ͖ΒΒͷυΩυΩϏδϡΞϧίϛο
    Ϋεʂࠓ݄ͷ·Μ͕λΠϜ͖ΒΒ."9݄߸ͷද
    ࢴ͸͖Μ͍ΖϞβΠΫʂʯ

    View Slide

  38. .BOHB5JNF,JSBSB."9࣮૷
    w getInfoText()ͷ಺༰Λมߋ͢Δඞཁ

    ˠ ΦʔόʔϥΠυ 0WFSSJEF
    Λߦ͏

    View Slide

  39. w લ४උ
    w MangaTimeKiraraMAX͔Β

    title / number / coverTitle ʹ

    ΞΫηεͰ͖ΔΑ͏ʹ͢Δ
    .BOHB5JNF,JSBSB."9࣮૷

    View Slide

  40. w લ४උ
    w ࠓճ͸ϝϯόม਺ͷΞΫηεम০ࢠΛมߋ
    w ϝιουΛ࡞੒͢Δ৔߹΋͋Δ
    w private ࣗ෼ͷΫϥε಺ͷΈ

    protected ࣗ෼ͱࢠΫϥε಺ͷΈ

    .BOHB5JNF,JSBSB."9࣮૷

    View Slide

  41. ΞΫηεम০ࢠมߋ
    * Magazine.java
    class Magazine {
    protected String title;
    private String genre;
    private String company;
    protected int number;
    public Magazine(…
    }

    View Slide

  42. ΞΫηεम০ࢠมߋ
    * BaseMangaTimeKirara.java
    class BaseMangaTimeKirara extends ComicMagazine {
    protected String coverTitle;
    public BaseMangaTime…
    }

    View Slide

  43. .BOHB5JNF,JSBSB."9࣮૷
    w getInfoText() ΛΦʔόʔϥΠυ͢Δ
    w @OverrideΞϊςʔγϣϯ ޙड़
    Λ෇͚Δ
    w ෇͚ͳͯ͘΋ίϯύΠϧ௨Δέʔε΋͋Δ͚Ͳ

    ෇͚·͠ΐ͏

    View Slide

  44. .BOHB5JNF,JSBSB."9࣮૷
    * MangaTimeKiraraMAX.java
    class MangaTimeKiraraMAX extends BaseMangaTimeKirara {
    public MangaTimeKiraraMAX(String coverTitle, int number) {
    super("·Μ͕λΠϜ͖ΒΒMAX", coverTitle, number);
    }
    @Override
    public String getInfoText() {
    return "·Μ͕λΠϜ͖ΒΒͷυΩυΩϏδϡΞϧίϛοΫε!ࠓ݄ͷ" +
    title + number + "݄߸ͷදࢴ͸" + coverTitle + "!";
    }
    }
    getInfoText() Λ Override ͢Δ

    View Slide

  45. BaseMangaTimeKirara kirara = new BaseMangaTimeKirara(
    "·Μ͕λΠϜ͖ΒΒMAX", "͖Μ͍ΖϞβΠΫ" , 1);
    String text = kirara.getInfoText();
    MangaTimeKiraraMAX max = new MangaTimeKiraraMAX(
    "͖Μ͍ΖϞβΠΫ" , 1);
    String maxText = max.getInfoText();
    .BOHB5JNF,JSBSB."9׬੒
    UFYU๕จࣾͷ·Μ͕λΠϜ͖ΒΒ."9݄߸
    NBY5FYU·Μ͕λΠϜ͖ΒΒͷυΩυΩʢུʣ

    View Slide

  46. Կ͕خ͍͔͠
    w ࡶࢽؔ܎ͷॲཧΛߦ͍͍ͨ࣌ʜ
    w ࡶࢽશମͷॲཧ͸MagazineΛҾ਺ʹऔΔ
    w ଞͷMagazineͷࢠΫϥε΋࢖͑Δ
    w ·Μ͕λΠϜ͖ΒΒઐ༻ͷॲཧ͸

    MangaTimeKiraraΛҾ਺ʹऔΔ

    View Slide


  47. public void printInfo(Magazine magazine) {
    System.out.println(magazine.getInfoText());
    }
    public void printCoverTitle(BaseMangaTimeKirara magazine) {
    System.out.println(magazine.getCoverTitle());
    }
    MangaTimeKiraraMAX max =
    new MangaTimeKiraraMAX("͖Μ͍ΖϞβΠΫ" , 1);
    printInfo(max);
    printCoverTitle(max);

    View Slide

  48. "CTUSBDU

    Ϋϥε

    View Slide

  49. "CTUSBDUΫϥε
    w +BQBOFTFந৅Ϋϥε
    w 㲗۩ମ
    w ϝιουͷ۩ମతͳॲཧΛࢠΫϥεʹ೚ͤΔ
    w ϝιουΛ࣮૷ͤͣʹએݴ͚ͩ͢Δ͜ͱ͕Ͱ͖Δ
    w "CTUSBDUͰͳ͍
    ࢠΫϥε͸ඞͣϝιουΛ࣮૷

    View Slide

  50. "CTUSBDUΫϥε
    w ۩ମతͳॲཧΛॻ͔ͳͯ͘΋ྑ͍

    ˠ ܧঝ͞ΕΔ͜ͱ͕લఏͷΫϥε
    ˠ "CTUSBDUΫϥεࣗମͷΦϒδΣΫτ͸

    ࡞Εͳ͍

    View Slide


  51. w ·Μ͕λΠϜ͖ΒΒઐ༻ʹɺ

    ΞχϝԽ͍ͯ͠Δອը͕͋Ε͹ฦ͢ػೳ࡞੒
    w ͱΓ͋͑ͣࠓճ͸Ϋϥε͝ͱʹݻఆ஋Λฦ͢
    w BaseMangaTimeKiraraΛ"CTUSBDUʹ
    w ͜ͷΫϥε͸ࡶࢽͦͷ΋ͷͰ͸ͳ͍
    w ܧঝ͞ΕΔ͜ͱ͕લఏ

    View Slide

  52. * BaseMangaTimeKirara.java
    abstract class BaseMangaTimeKirara extends ComicMagazine {
    protected String coverTitle;
    public BaseMangaTimeKirara(String title, String
    coverTitle, int number) {
    super(title, , number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    public abstract String getAnimeTitle();
    }
    abstract म০ࢠΛ͚ͭΔ

    View Slide

  53. * BaseMangaTimeKirara.java
    abstract class BaseMangaTimeKirara extends ComicMagazine {
    protected String coverTitle;
    public BaseMangaTimeKirara(String title, String
    coverTitle, int number) {
    super(title, , number);
    this.coverTitle = coverTitle;
    }
    public String getCoverTitle() {
    return coverTitle;
    }
    public abstract String getAnimeTitle();
    }
    BCTUSBDUϝιουΛ௥Ճʢ࣮૷͸ॻ͔ͳ͍ʣ

    View Slide

  54. w getAnimeTitle()ΛΦʔόʔϥΠυ͢Δ
    w ͠ͳ͍ͱίϯύΠϧΤϥʔ
    .BOHB5JNF,JSBSB."9࣮૷

    View Slide

  55. * MangaTimeKiraraMAX.java
    class MangaTimeKiraraMAX extends BaseMangaTimeKirara {
    public MangaTimeKiraraMAX(String coverTitle,
    int number) {
    super("·Μ͕λΠϜ͖ΒΒMAX", coverTitle, number);
    }
    @Override
    public String getInfoText() {
    return “·Μ͕λΠϜ͖ΒΒ…" + …(ུ);
    }
    @Override
    public String getAnimeTitle() {
    return "εςϥͷ·΄͏";
    }
    }

    View Slide

  56. "CTUSBDUΫϥεΛҾ਺ʹ
    public void printAnimeTitle(BaseMangaTimeKirara magazine) {
    System.out.println( magazine.getAnimeTitle() );
    }
    // BaseMangaTimeKirara ͸΋͏ΦϒδΣΫτΛ௚઀࡞੒Ͱ͖ͳ͍
    MangaTimeKiraraMAX max =
    new MangaTimeKiraraMAX("͖Μ͍ΖϞβΠΫ" , 1);
    printAnimeTitle(max);
    ௨ৗͷΫϥεͱಉ͡Α͏ʹϝιουΛݺ΂Δ

    View Slide

  57. *OUFSGBDF

    View Slide

  58. *OUFSGBDF
    w ΠϯλʔϑΣʔε
    w ந৅ϝιουͱఆ਺ͷΈ
    w ܕͱͯ͠࢖͑ΔʢࣅͯΔ͕ΫϥεͰ͸ͳ͍ʣ
    w ௚઀ΦϒδΣΫτΛ࡞੒Ͱ͖ͳ͍
    w ΠϯλʔϑΣʔεΛʮ࣮૷ JNQMFNFOU
    ͢Δʯ
    ͱ͍͏

    View Slide

  59. *OUFSGBDFͱ

    "CTUSBDU$MBTT
    w "CTUSBDU$MBTT͸਌ࢠؔ܎
    w " ࢠ
    JT# ਌

    w *OUFSGBDF͸ೳྗతͳײ͡
    w " Ϋϥε
    DBO# ΠϯλʔϑΣʔε

    View Slide

  60. *OUFSGBDF
    w ΠϯλʔϑΣʔε͸ଟॏʹ࣮૷Մೳʢॏཁʣ
    w ʮ͜ͷΫϥε͸͜͏͍͏ػೳΛ࣋ͪ·͢Αʯͱ͍
    ͏ҙຯ߹͍ͳͷͰ

    View Slide


  61. w ࡶࢽΛϑΝΠϧʹग़ྗ͍ͨ͠
    w ʮϑΝΠϧʹग़ྗͰ͖Δ΍ͭʯͱ͍͏*OUFSGBDF
    Λ࡞Δ
    • FileExpotable Λ࡞Δ

    View Slide

  62. * FileExportable.java
    interface FileExportable {
    public void export();
    ʩ
    'JMF&YQPSUBCMF࣮૷
    interface Λఆٛ

    View Slide

  63. * FileExportable.java
    interface FileExportable {
    void export();
    ʩ
    'JMF&YQPSUBCMF࣮૷
    ϝιουΛఆٛ (abstract ෆཁ)

    View Slide

  64. .BHB[JOF࣮૷
    w MagazineʹFileExportableΛ࣮૷͢Δ

    View Slide

  65. class Magazine implements FileExportable {
    protected String tit…
    public Magazine(String titl…) {
    this.title = ti…;
    }
    public String getInfoText() {
    return co…
    }
    @Override
    public void export() {
    // export ॲཧΛॻ͘
    }
    }
    FileExportable Λ implement ͢Δ

    View Slide

  66. class Magazine implements FileExportable {
    protected String tit…
    public Magazine(String titl…) {
    this.title = ti…;
    }
    public String getInfoText() {
    return co…
    }
    @Override
    public void export() {
    // export ॲཧΛॻ͘
    }
    }
    export ϝιουΛ࣮૷͢Δ

    View Slide

  67. class Magazine implements FileExportable, Hoge, Piyo {
    }
    w *OUFSGBDF͸ෳ਺࣮૷Մೳ
    w “,”Ͱ۠੾ͬͯॻ͘
    w ͦΕͧΕʹఆٛ͞ΕͨϝιουΛ࣮૷͢Δ

    View Slide

  68. w ܧঝͱ࣮૷͸ಉ࣌ʹߦ͑Δ
    w ܧঝ΍࣮૷ؒͰϝιου໊͕ඃͬͯ΋0,
    class BaseMangaTimeKirara extends ComicMagazine implements Foo {
    }

    View Slide

  69. public void exportFile( FileExportable exportable ) {
    exportable.export();
    }
    MangaTimeKiraraMAX max =
    new MangaTimeKiraraMAX("͖Μ͍ΖϞβΠΫ" , 1);
    exportFile(max);
    Ҿ਺ͷܕʹΠϯλʔϑΣʔεΛࢦఆ͢Δ

    View Slide

  70. public void exportFile( FileExportable exportable ) {
    exportable.export();
    }
    MangaTimeKiraraMAX max =
    new MangaTimeKiraraMAX("͖Μ͍ΖϞβΠΫ" , 1);
    exportFile(max);
    FileExportable Λ࣮૷͍ͯ͠ΔΫϥεͰݺͼग़͠

    View Slide

  71. ComicMagazine
    Magazine
    BaseMangaTimeKirara
    MangaTimeKirara,
    MangaTimeKiraraCarat,
    MangaTimeKiraraMax, etc…
    FileExportable
    Hoge
    Foo

    View Slide

  72. ܕม׵

    View Slide

  73. ܕม׵
    w ϓϩάϥϜͷதͰม਺Λ

    ͲͷΫϥεɾΠϯλʔϑΣʔεͱͯ͠ѻ͏͔
    w มߋͯ͠΋ΦϒδΣΫτͷ࣮ମ͸มΘΒͳ͍
    ˠ ϝιουɾม਺ͷ݁Ռ͸มΘΒͳ͍

    ʢݺͼग़ͤΔϝιουɾม਺͕มΘΔʣ

    View Slide

  74. ܕม׵ͷछྨ
    w ҉໧తܕม׵
    w ࣗ໌ͳ΋ͷ
    w উखʹ΍ͬͯ͘ΕΔ
    w ໌ࣔతܕม׵ʢΩϟετʣ
    w ࣗ໌Ͱͳ͍΋ͷ
    w ࣗ෼Ͱ໌ࣔ͢Δඞཁ͕͋Δ

    View Slide

  75. ܕม׵ͷྫ
    w ਌ΫϥεΛҾ਺ʹऔΔϝιουʹࢠΫϥεΛ
    ೖΕΔ࣌ʹܕม׵͢Δʢ҉໧తʣ

    w ܕม׵͢Δ͜ͱͰ਌Ϋϥεʹͳ͍ࢠΫϥεͷ
    ϝιουΛݺͼग़͢ʢ໌ࣔతʣ

    View Slide

  76. ComicMagazine
    Magazine
    BaseMangaTimeKirara
    MangaTimeKirara,
    MangaTimeKiraraCarat,
    MangaTimeKiraraMax, etc…
    FileExportable
    Hoge
    Foo

    View Slide

  77. ҉໧తͳܕม׵
    ComicMagazine
    Magazine
    Magazine magazine = new ComicMagazine(…);
    ਌ ࢠ

    View Slide

  78. ҉໧తͳܕม׵
    FileExportable exportable = new Magazine(…);
    ΠϯλʔϑΣʔε ࣮૷Ϋϥε
    FileExportable Magazine

    View Slide

  79. ҉໧తͳܕม׵
    FileExportable exportable = new MangaTimeKirara(…);
    ΠϯλʔϑΣʔε ࣮૷ΫϥεͷࢠΫϥεɹ
    FileExportable MangaTimeKirara

    View Slide

  80. ҉໧తͳܕม׵

    ʢϓϦϛςΟϒܕʣ
    ਫ਼౓ߴ͍ ਫ਼౓௿͍
    long int
    long longValue = 2;
    ৄࡉ: http://www.atmarkit.co.jp/ait/articles/0803/18/news149.html

    View Slide

  81. ComicMagazine
    Magazine
    Magazine magazine = new ComicMagazine(…);
    ComicMagazine comicMagazine = (ComicMagazine) magazine;
    ਌ ࢠ
    ໌ࣔతͳܕม׵ʢΩϟετʣ

    View Slide

  82. FileExportable exportable = new Magazine(…);
    Magazine magazine = (Magazine) magazine;
    ΠϯλʔϑΣʔε ࣮૷Ϋϥε
    FileExportable Magazine
    ໌ࣔతͳܕม׵ʢΩϟετʣ

    View Slide

  83. ໌ࣔతͳܕม׵

    ʢΩϟετ ϓϦϛςΟϒܕʣ
    ਫ਼౓ߴ͍ ਫ਼౓௿͍
    long int
    long longValue = 2;
    int intValue = (int) longValue;
    ৄࡉ: http://www.atmarkit.co.jp/ait/articles/0803/18/news149.html

    View Slide

  84. ଓ͖͸HJTUͰ
    IUUQTHJTUHJUIVCDPNOPOZMFOF
    FBGGFGBGDFFBC

    View Slide