ソフトウェア制作論 平成30年11月21日.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
プログラミング第5回 1 while ループ 文字列の操作
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミング 平成24年1月11日 森田 彦.
プログラミング基礎I(再) 山元進.
IO - 入出力 小西 亨.
Iアプリプログラミング その1  鳥居秀徳.
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
情報伝播によるオブジェクト指向プログラム理解支援の提案
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
CGプログラミング論 平成28年4月27日 森田 彦.
JavaBeans とJSP データベース論 第5回.
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
UDPマルチキャストチャット                    空川幸司.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
プログラミング 平成23年12月21日 森田 彦.
ネットワークプログラミング論 平成28年11月7日 森田 彦.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
暗号技術 ~JAVAプログラム①~ (5週目)
ソフトウェア制作論 平成30年12月5日.
データ構造とアルゴリズム論 第4章 レコード構造を使った処理-クラスの利用
ソフトウェア制作論 平成30年10月3日.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
ソフトウェア制作論 平成30年9月26日.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソフトウェア制作論 平成30年10月24日.
ソフトウェア制作論 平成30年10月31日.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月21日
ソフトウェア制作論 平成30年10月10日.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
プログラミングⅠ 平成30年10月22日 森田 彦.
オブジェクト・プログラミング 第8回.
プログラミングⅠ 平成31年1月7日 森田 彦.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第4回
暗号技術 ~JAVAプログラム②~ (6週目)
ソフトウェア制作論 平成30年11月28日.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
プログラミングⅠ 平成30年12月10日 森田 彦.
高度プログラミング演習 (11).
ソフトウェア制作論 平成30年11月14日.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
cp-1. クラスとメソッド (C++ オブジェクト指向プログラミング入門)
プログラミング 平成28年11月15日 森田 彦.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
ソフトウェア制作論 平成30年10月17日.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

ソフトウェア制作論 平成30年11月21日

第9章 プログラムの汎用化3 クラスの利用による機能の分離 第9章 プログラムの汎用化3  クラスの利用による機能の分離 <本日の学習内容とねらい> 前章のプログラムから、元号を求める部分を分離させてクラスとして 定義する。 そして、メインプログラムではそのクラスのオブジェクトを生成し、そ れを利用することで処理を実行するようにする。 こうすることで、当該クラスは他のプログラムからも利用可能になる。 以上を体験することで、ひとまとまりの機能をクラスとして定義するこ とで、プログラムの汎用化がさらに進むことを理解する。

基礎課題9-1 クラスの新規作成 package kiso9; public class EraClass { }

基礎課題9-2 import文の追加 import java.io.*; import java.util.StringTokenizer; package kiso9; import java.io.*; import java.util.StringTokenizer; public class EraClass { }  このクラスで、外部ファイルからのデータ読み取りを行う必要がある。  そこで、それに必要なクラスが含まれるパッケージをimportする。

基礎課題9-3 インスタンス変数の定義(宣言) 基礎課題9-3 インスタンス変数の定義(宣言) package kiso9; import java.io.*; import java.util.StringTokenizer; public class EraClass { String[] eraName; //元号名 int[] eraYear,eraMonth,eraDay; //元号の開始年月日 int year, month, day; //入力した西暦年月日 String fName; //外部ファイル名 }  元号変換を行うために必要な変数を定義(宣言)する。

基礎課題9-4 setEraData()の定義 public class EraClass { ・・・ public void setEraData(int num, int year, int month, int day, String fName) { this.year=year; this.month=month; this.day=day; this.fName=fName; eraName=new String[num]; eraYear=new int[num]; eraMonth=new int[num]; eraDay=new int[num]; }  データをセットするメソッドを定義する。

基礎課題9-5 getEraName()の定義 public String getEraName(){ int eraNumber=readData(); String ans=""; int i; for (i=0;i<eraNumber;i++) { if( year<eraYear[i] || (year==eraYear[i] && month<eraMonth[i]) || (year==eraYear[i] && month==eraMonth[i] && day<eraDay[i]) ) { break; } if(i==0) { //最初の元号以前 ans="******"; } else { ans=eraName[i-1]+( (year-eraYear[i-1])+1 ); return ans;  このメソッドは基本的に前章のものと同様

基礎課題9-6 readData()の定義 ファイル名を変数で指定していること以外は前章のものと同様 private int readData() { int ans=0; try { BufferedReader fin=new BufferedReader(new FileReader(fName)); String data; int i=0; ・・・(前章と同じ) } ans=i; fin.close(); } catch (Exception em) {System.out.println(em); } return ans;  ファイル名を変数で指定していること以外は前章のものと同様

基礎課題9-7 メインプログラムの修正 private void jButtonGengouActionPerformed(ActionEvent evt) { int year=Integer.parseInt(jTextFieldYear.getText()); int month=Integer.parseInt(jTextFieldMonth.getText()); int day=Integer.parseInt(jTextFieldDay.getText()); String eraName=getEraName(year,month,day); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); }  クラスEraClassを利用するように修正。

基礎課題9-7 メインプログラムの修正 int dataSize=100; String fName="年号データ.csv"; 基礎課題9-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(); String eraName=getEraName(year,month,day); jLabelResult.setText(eraName+"年"+month+"月"+day+"日"); } NewJFrameクラスからgetEraName()およびreadData()メソッドを削除できる。

変数を用いたプログラムの汎用化3 クラスの利用による機能の分離 クラスeraClassは他のプログラムからも利用できる。 → 再利用 性の向上 元号変換部分をクラスとして分離・独立させることで、プログラムの 汎用化はさらに進んだ。 <オブジェクト指向プログラミングの基本スタイル> メインプログラムでは以下のスタイルで処理を実現する。 ある機能を持ったクラスのオブジェクトを生成。 そのオブジェクトのメソッドを利用。   オブジェクト名.メソッド名()