9月4・5日の復習 

September 07 [Sun], 2008, 19:30
先週は1ヶ月半ぶりの授業でしたが、JavaSQLの操作は思い出していただけましたか?

この2日間は、JavaプログラムからMySQLに接続し、「検索したデータをフレームに表示する」、また「入力したデータをデータベースに追加する」ことを学習しました。

授業の中で皆さんの間違いが多かった箇所をまとめておきます。

(1)SQL文の作成
プログラムの中でSQL文を作成しますが、単語の区切りとしてスペースを入れなければならないところを入れ忘れると「DBエラー」が発生します。

例えば、Select * from WORKERS where ID = "CD1111"
というSQL文の場合、「=」の前後以外は単語の区切りにスペースを入れないとエラーが発生します。
特に、where句の前に入れ忘れていた人が多かったようです。

ちなみに、「MySQL Command Line Client」で必要だった文末の「;」はJavaプログラムからSQL文を実行する際には必要ありません
「;」は、「MySQL Command Line Client」など直接DBを操作するソフトの場合、命令文の文末を表す記号として必要になります。

(2)SQL文の実行
作成したSQL文を実行するには、Select文の場合とそれ以外(Insert、Update、Delete)の場合ではコードに違いがあります。

Select文の場合:ResultSet rs = st.executeQuery(sql);
それ以外の場合:st.executeUpdate(sql);

Select文の場合は、変数sqlに保存されているSQL文の問合せ(Query)を実行(execute)し、結果を表形式(ResultSet)にします。

それ以外の場合は、SQL文を実行(execute)し、テーブルを更新(Update)します。
この場合の更新とは、変更・追加・削除すべてを含みます。

来週以降も、JavaとDBの連携を学習します。
あと3週間一緒に頑張りましょう

7月10・11日の復習 

July 14 [Mon], 2008, 14:00
先週は、MySQLに保存されているデータの「検索・挿入・削除・変更」を、Javaアプリケーションで行う方法を学習しました。

上記4項目のSQL文法を簡単にまとめておきます。

検索
SELECT 列名 FROM テーブル名 WHERE 条件式;

SELECT句とFROM句は必須です。WHERE句は表示するレコードに条件を与える場合に記述します。
「列名」は全列の場合「*」を、列を指定する場合は表示する順番に「,(カンマ)」で区切り指定します。

条件式は、「左辺 演算子 右辺」 の形式で記述します。IF文と同じ書き方ですね(ただし、等号記号は = です
注意しなければいけないのは、列の型が数値以外(文字列・日付)の場合、「" "」(ダブルコーテーション)または「' '」(シングルコーテーション)で囲むということです

挿入
INSERT INTO テーブル名 VALUES(値1, 値2,・・・

VALUES句でも、数値以外のデータはコーテーションで囲まなければいけません。
そして、値についてはテーブル構造と同じ順番で記述しなければいけません。
入力値を省略したい列がある場合、テーブル名の後ろに「(列名1, 列名2,・・・)」と値を入力する列だけを指定し、VALUES句でその列に代入する値を同じ順番で指定します。

削除
DELETE FROM テーブル名 WHERE 条件式;

WHERE句の注意点はSELECT文と同じです。
WHERE句を書かない場合、全レコードが削除されてしまいます

更新
UPDATE テーブル名 SET 列名1 = 値1(, 列名2 = 値2, ・・・) WHERE 条件式;

SET句では、2つ以上の列を更新する場合、「,(カンマ)」で区切って指定することができます。


では、授業で扱った「WorkersList3」を見てみましょう。


@ String型の変数「sql」にSELECT文を文字列として保存します。
A @のSQL文を実行した結果が、表形式で「rs(ResultSet型の変数)」に保存されます。
B Aの表にレコードが存在する間(while(rs.next()))は、テーブルからデータを取り出し、変数に保存した後、画面に表示します。

続けて、「WorkersList4」を見てみましょう。


@ キーボードから入力した検索IDを変数「searchID」に保存します。
このデータがWHERE句の条件となります。

生成されたSELECT文は以下のようになります。
(検索IDがCD1111の場合)
SELECT  * FROM WORKERS WHRE ID = "CD1111"

この時、青字の部分は「変数searchID」に保存されていますので「+」で連結します。
赤字の部分はchar型のデータを囲む「" "」でString型の文字列を囲む「" "」と区別するために、「¥」をつけます。

もしわかりづらければ「' '」で囲むこともできます。

画面上にSQL文を表示(System.out.print(sql))して、確認しながら進めましょう

では、明日の試験頑張ってください

7月3・4日の復習 

July 08 [Tue], 2008, 9:41
先週は、Javaのストリーム機能とデータベースMySQLとの連携を学習しました。

ストリーム機能とは、外部装置を使用してデータの入力→加工→出力を行う一連の操作のことです。
例えば、「キーボードからデータを入力し、ファイルに書き込む」とか「ファイルのデータを読み込み画面に表示する」などです。

注意しなければいけないのは、外部装置を使用する場合「IOエラーが発生する可能性がある」ということです。
例えば、「ソースコードに書かれているファイルが見つからない」とか「キーボードが壊れていた」などのような場合にIOエラー(IOException)が発生します。

そのような場合に備えて、必ずエラー処理(例外処理)を記述しなければいけません。
記述は、「throws」でも「try〜catch」でも構いませんが、応用範囲の広い「try〜catch」の書き方を覚えておいたほうがよいでしょう


また、先週はMySQLのインストールを行いました。
皆さんが授業で学習しているDB2と種類は異なりますが、SQL文の書き方はもちろん、Javaとの連携も一部分を除いて同じように操作することができます。

授業では、MySQLで作成したテーブルにアクセスし、レコードを1件表示するというプログラムを作成しました。

今週は、「全レコードを表示する」「条件に該当するレコードを表示する」「レコードを追加・削除・変更する」プログラムを作成します。

今週も頑張りましょう

6月26・27日の復習 

June 30 [Mon], 2008, 3:40
先週は「継承」について学習しました。

継承で覚えてほしいポイントは以下の通りです。
@ 継承の特徴
A オーバーライド
B superキーワード

@ 継承の特徴
継承とは、あるクラスを元に他のクラスを作成することです。

書式:
  class クラス名 extends 元クラス名{
               :
  }

この時、元クラスをスーパークラス、新しく作成したクラスをサブクラスと呼びます。

サブクラスでは、スーパークラスのメンバ(フィールド、メソッド)をすべて使用することができます(継承)。
ただし、コンストラクタは継承されません(コンストラクタは名前がクラス名ということを考えれば継承されない理由が理解できますね)。

A オーバーライド
スーパークラスのメソッドと同じ名前で、サブクラスで再定義することをオーバーライドといいます。
mainメソッドで作成したインスタンスにより、どちらのメソッドが呼ばれるかは自動的に決まります。

B superキーワード
サブクラスでスーパークラスのメソッドやコンストラクタを呼び出す時は、superキーワードを使用します。

メソッドを呼び出す時は、super.メソッド名()
コンストラクタを呼び出す時は、super()と書きます。


夏休み前の授業もあと2週間。
今週は、ファイルの読み書きとデータベース(MySQL)のインストールを行う予定です。
あと少し一緒に頑張りましょう

6月19・20日の復習 

June 23 [Mon], 2008, 14:30
先週は、今までの総復習として「自動車登録プログラム」を作成しました。

この課題を通して確認してほしいのは、以下のポイントです

・BeanクラスとContorolクラスの役割
・インスタンスの作成
・メソッドの定義(引数・戻り値)
・コンストラクタ
・オーバーロード

・アクセス修飾子とセッター・ゲッター
・例外処理(try〜catch文)

赤字の部分は全員必須
青字の部分は、金曜日に前半分の席に座って復習授業を受けてくれた人に説明しきれなかったので、近いうちに(たぶん7/23, 24の補講時)復習したいと思っています。

今週は、Javaの中級編としてテキストPart4に入る予定です。

夏休み前の授業はあと3週間・・・ということは期末試験まであと3週間赤字部分は要チェック
楽しい夏休みを迎えるためにも、あと少し一緒に頑張りましょう


6月12・13日の復習 

June 16 [Mon], 2008, 7:00
先週でJavaの基本部分は終了しました
みなさん2ヶ月間本当によく頑張ってくれました
次のステップに進むために、これまでのところはしっかり復習しておいてくださいね

先週は「アクセス修飾子」「例外処理」について学習しました。

「アクセス修飾子」は、オブジェクト指向の特徴のひとつで、フィールドに適切でない値が入力されないようにブロックする仕組みです。

「private」に設定すると、同じクラスの中からしかアクセスすることはできません。
「public」に設定すると、他のどのクラスからもアクセスすることができます(ただし、他のパッケージからアクセスする場合には import文が必要です)。

通常、フィールドはprivateに設定しますが、privateフィールドにアクセスする仕組みが「セッター・ゲッター」です。
Eclipseでは、簡単にセッター・ゲッターを作成することができますが、これはメソッドなので手入力で行うこともありますから、書式は覚えておいてくださいね

セッター:
public void setフィールド名(引数){
  フィールド名 = 引数;
}


ゲッター:
public 戻り値の型 getフィールド名(){
  return フィールド名;
}



「例外処理」は、Javaプログラム実行時に発生するエラー(例外)を処理するための仕組みです。

ユーザの操作によるエラーが発生した場合、なぜエラーが発生したのか、何に気をつければよいのかわかるようなメッセージを表示させてください
また、エラーが発生した時点でプログラムを終了させる、もしくは再入力させるといったロジックを考える必要もあります。

書式:
try{
  エラーが発生する可能性のあるコード
}catch(処理するエラーの型 変数名){
  エラーが発生した場合の処理コード
}


tryブロックでエラーが発生した場合、ブロック内のそれ以降のコードはすべてとばされ、catchブロックへ制御が移ります。

また、catchブロックは複数書くこともできます。
発生するエラーの種類ごとに記述しましょう。

今週は、今までの総復習問題を行う予定です。
体調に気を付けて遅刻・欠席のないようにお願いします

就活中の人は頑張ってくださいね

6月5・6日の復習 

June 09 [Mon], 2008, 6:50
先週は「コンストラクタ」を中心に学習しました。

コンストラクタとは
インスタンスを作成すると同時に行いたい処理がある場合、「コンストラクタ」に定義します。
例えば、「画面にメッセージを表示する」とか「フィールドに値をセットする」などの処理が行われます。
コンストラクタは、フィールドやメソッドとともにBeanクラスに定義されるのが一般的です。

コンストラクタの書式は、メソッドととてもよく似ていますが、以下の点に注意が必要です。
1. コンストラクタ名はクラス名と同じ
2. 引数を指定することはできるが、戻り値はない
3. 実行されるのは、mainメソッドを持つクラス(コントロールクラス)でインスタンスが作成される時

メソッドは自由に呼び出すことができましたが、コンストラクタはインスタンス作成時に「自動的に実行される」のです。
逆に言えば、コンストラクタは自由に呼び出すことはできないのです。


もうひとつ、重要な「オーバーロード」を学習しました。

オーバーロードとは
同じ名前で引数のデータ型や数、並びが異なるメソッドやコンストラクタを定義すること。
メソッドを定義する際に、「ほぼ同じ処理だけど使用するデータ型や細かな処理が微妙に異なる」という場合があります。

このような場合、同じメソッド名を使い中に記述するコードを変えることができます。
ただし、実行する時にどれが選ばれるかは引数によって決まりますので、引数のデータ型や数、並びを異なるものに設定しなければいけません。

コンストラクタも考え方は同じです。

以下のような2つのクラスがあった場合、結果はどのように表示されるでしょうか?





『オーバーロード』はJavaの大きな特徴のひとつですので、しっかり覚えておいてくださいね

5月29・30日の復習 Part2 

June 02 [Mon], 2008, 22:25
先週扱った例題のつづきを解説します。

例題3:BMI計算プログラム



・Beanクラスのソースコード:クラス名 Bmi



・ContorolクラスのAction Performedメソッドに記述するソースコード



クラスを分割する方法についてはイメージできましたか?
今週はクラスについてもう少し学習します。

最近、天候が不順で体調を崩しがちですので十分気を付けてくださいね
私は先週の土曜日雨の中ゴルフに行ってきました
3月下旬の気温だったそうです。
日曜日はとってもいいお天気だったのに・・・
普段の行い・・・でしょうか。

では、今週も頑張りましょう

5月29・30日の復習 Part1 

June 02 [Mon], 2008, 22:20
先週は、BeanクラスとContorolクラスを分けた練習問題を中心に学習しました。

C言語の時のように、1つのプログラムの中で全部を記述する方がわかりやすいと思いますが、仕事で「生産性」を考えた場合、関連するデータ(フィールド)や処理(メソッド)をまとめてクラスという単位で部品を作っておき、それらを自由に組み合わせ、必要であれば再利用することで、生産性をアップすることができます。

このように、部品(モノ=オブジェクト)ごとにプログラムを作り上げていく考え方を『オブジェクト指向』といいます

では、先週扱った例題をみてみましょう。

例題1:電卓プログラム(かけ算のみ)



・Beanクラスのソースコード:クラス名 Dentaku



・ContorolクラスのAction Performedメソッドに記述するソースコード




例題1の応用問題として、例題2をグループワークで作成しました。

例題2:電卓プログラム(加減乗除を行う)



例題2では、「+−×÷」それぞれのボタンによって計算結果が変わります。
解説は、今週の授業で行います。

5月22・23日の復習 

May 26 [Mon], 2008, 6:55
先週は「メソッド」「クラス」について学習しました

そもそもメソッド(method)って何でしょう
教科書には『プログラムの処理の一部分をまとめて名前をつけたもの』と書かれています。
他のプログラム言語では「関数」と呼ばれることもあります。

辞書を調べてみると、「方法・順序」という意味らしいです。
「几帳面」なんていう訳もありました

メリットはというと、『複雑になりがちなプログラムをすっきり書くための機能』(教科書P160)と書かれています。

プログラムは、複雑になればなるほど、当然ですがコードが長くなります。
また、同じような処理が繰り返しあちこちに出てきたりもします
それを、ある程度まとめて別の小さなプログラムにすることにより、mainメソッドがすっきりします

メソッドを使うにあたり、覚えておかなければいけない言葉は次の3つです。
1. メソッド名:「独立した一連の処理」として扱うので名前が必要です。
2. 引数:メソッドを実行する際に必要なデータ(実行命令を出す側から渡されます)。
3. 戻り値:メソッドを実行した結果、mainメソッド(実行命令を出す側)に戻される値。


また、メソッドには以下の4パターンがあります。
1. 引数なし、戻り値なし
2. 引数あり、戻り値なし
3. 引数なし、戻り値あり
4. 引数あり、戻り値あり


メソッドで使用するデータ(引数)と受け取る結果(戻り値)はその時々に応じて異なります。


そして、「クラスの基本」についても学習しました。

クラスには大きく分けると、
@フィールドとメソッド(あわせてメンバと呼ぶ)を持っていて、プログラムの中で扱うデータを定義するクラス(Bean)
A@のクラスを利用して、処理の流れを組み立てるクラス(Contorol)
があります。

このように、クラスを分割して再利用できるようにする仕組みが『オブジェクト指向』の第1段階です。

上記@のクラス(メンバ)を利用するには、Aのクラスで『インスタンス作成』の儀式が必要です。
これは、@のクラスでは単に機能を定義しているだけなので、実際に利用するにはAのクラスのmainメソッドで「これから〇〇クラスの機能を利用します!」という宣言が必要なのです。

教科書P179の「Sample.java」では、
Person p = new Person();
の行がこの宣言です。

これ以降、Personクラスのメンバを利用する場合、「p.フィールド名」「p.メソッド名」でアクセスすることができるようになります。

そして、この時の「p」を『インスタンス変数名』と呼びます。

ここまでが、クラスの基本です。
今週はクラスについてさらに学習しますので、ここまでの範囲はしっかり頭に入れておいてくださいね
P R
2008年09月
« 前の月  |  次の月 »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30