ソフトウェア制作論 平成30年11月28日
第10章 クラスの利用1 -既存クラスの継承による機能の発展- 第10章 クラスの利用1 -既存クラスの継承による機能の発展- <本日の学習内容とねらい> 前章で作成したクラスEarClassを拡張する(新たなメソッドを追加す る)。 その拡張をクラスの継承機能を用いて行う。 その過程を通じてオブジェクト指向プログラミングにおけるプログラム (クラス)の拡張の仕方を理解する。
基礎課題10-1 クラスの新規作成 package kiso10; public class NewEraClass { }
基礎課題10-2 継承の追加 package kiso10; public class NewEraClass { }
基礎課題10-2 継承の追加 package kiso10; 基礎課題10-2 継承の追加 package kiso10; public class NewEraClass extends EraClass { }
基礎課題10-3 メソッド(原型)の記述 public class NewEraClass extends EraClass { 基礎課題10-3 メソッド(原型)の記述 public class NewEraClass extends EraClass { public String getWeekDay() { ・・・ } private int getDayNumberBefore(){ private int getDayNumber(){ private boolean isLeapDay(int year){
基礎課題10-7 メインプログラムの修正 private void jButtonGengouActionPerformed(ActionEvent evt) { int year=Integer.parseInt(jTextFieldYear.getText()); int month=Integer.parseInt(jTextFieldMonth.getText()); int day=Integer.parseInt(jTextFieldDay.getText()); EraClass era1=new EraClass(); int dataSize=100; String fName="年号データ.csv"; era1.setEraData(dataSize,year, month, day, fName); String eraName=era1.getEraName(); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); }
基礎課題10-7 メインプログラムの修正 jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 基礎課題10-7 メインプログラムの修正 private void jButtonGengouActionPerformed(ActionEvent evt) { int year=Integer.parseInt(jTextFieldYear.getText()); int month=Integer.parseInt(jTextFieldMonth.getText()); int day=Integer.parseInt(jTextFieldDay.getText()); NewEraClass era1= new NewEraClass() ; int dataSize=100; String fName="年号データ.csv"; era1.setEraData(dataSize,year, month, day, fName); String eraName=era1.getEraName(); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); String weekDay= era1.getWeekDay() ; jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 }
基礎課題10-7 メインプログラムの修正 jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 基礎課題10-7 メインプログラムの修正 private void jButtonGengouActionPerformed(ActionEvent evt) { int year=Integer.parseInt(jTextFieldYear.getText()); int month=Integer.parseInt(jTextFieldMonth.getText()); int day=Integer.parseInt(jTextFieldDay.getText()); NewEraClass era1= new NewEraClass() ; int dataSize=100; String fName="年号データ.csv"; era1.setEraData(dataSize,year, month, day, fName); String eraName=era1.getEraName(); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); String weekDay= era1.getWeekDay() ; jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 }
基礎課題10-7 メインプログラムの修正 jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 基礎課題10-7 メインプログラムの修正 private void jButtonGengouActionPerformed(ActionEvent evt) { int year=Integer.parseInt(jTextFieldYear.getText()); int month=Integer.parseInt(jTextFieldMonth.getText()); int day=Integer.parseInt(jTextFieldDay.getText()); NewEraClass era1= new NewEraClass() ; int dataSize=100; String fName="年号データ.csv"; era1.setEraData(dataSize,year, month, day, fName); String eraName=era1.getEraName(); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); String weekDay= era1.getWeekDay() ; jLabelWeekDay.setText(weekDay+"です。"); //曜日の表示 }
クラスの利用1 -既存クラスの継承による機能の発展- クラスの利用1 -既存クラスの継承による機能の発展- 継承機能を利用することで、継承元クラス(EraClass)に直接手を加え ることなく、機能を拡張(追加)することができた。→ 既存クラスの再利用 性の向上 オブジェクト指向プログラミングの基本スタイル→ 関連するクラスを継承 し、独自の機能を追加することで行う。 プログラミング演習の時間に皆がやって来たことは、JFrameクラスを継承 して(ボタンをつけるなど)独自の機能を追加すること。→すでにオブジェク ト指向プログラミングを実践していた。