20182320 2019-2020-1「データ構造とオブジェクト指向プログラミング、」最初の4週間の学習概要
1.学習コンテンツの概要
今週の学習内容は、次のセクションに分かれています。
- forループ4.8.1イテレータとA
- クラスとオブジェクト約5.1話
- クラス5.2の分析
- 5.3パッケージ
- 分析の5.4方法
- 5.5静的クラスメンバー
- 5.6クラス関係
- 5.7メソッドの設計
- 5.8メソッドのオーバーロード
- 5.9テスト
- 5.10デバッグ
forループ4.8.1イテレータとA
イテレータとは何ですか?
- イテレータは、ある対象我々は契約後、コレクションの要素に対処するためにそのメソッドを使用することができます。
- 各オブジェクトは、メソッド・イテレータ有するのhasNextブール値を返します。次回は、実際には、まだ処理されている私をすべて表示する際に何の説明偽ではありません。
- そこイテレータの次のメソッドは、コレクション内のデータ項目を取得することができます。
- 例:スキャナのオブジェクトクラス定義のイテレータ。
ループのイテレータとA:
- オブジェクトはイテレータクラスが実装されたときに反復処理可能インターフェースを、各ループ処理の変更のために使用することができます。
- このコードは、例えば、以下:
for (Book myBook : bookList)
System.out.println(mybook);
これは、より細かく分割することができます。
Book myBook;
while(boookList.hasNext())
{
mybook=bookList.next();
System.out.println(myBook);
}
詳細:ブックリストは、その後の反復子と各ブックオブジェクトの処理ループ、オブジェクトブックを保持する反復処理可能オブジェクトです。
このサイクルを超えると呼ばれているため、各ステートメント。
- スキャナは、イテレータ・クラスであるが、反復処理可能なインタフェースを実装していないので、のhasNextと次を有するが、このサイクルの上述の方法を使用することはできません。
クラスとオブジェクト約5.1話
- クラスやオブジェクト間の関係を想起:
クラスは、オブジェクトの青写真です。
クラスは、オブジェクトがこのコンセプトを実現することである、という概念を表しています。
- 各オブジェクトには持っている状態(状態)によってオブジェクトに関連する、定義された属性(属性)、クラスで宣言された変数によって定義された属性を。
- 各オブジェクトが持つ行動(動作)オブジェクトが関連付けられていることを、定義された操作(動作)、及び挙動は、クラス内で宣言方法によって定義されます。
- 次のように設計プログラムは2つの部分に分かれています。
オブジェクトのクラスを決定し、
責任の割り当て
クラス5.2の分析
- クラスに含めることができるデータ宣言とメソッド宣言二つの部分を、彼らはすべてのクラスですメンバー。
- メソッド宣言はまたに分かれている工法と従来の方法。コンストラクタ・メソッドは、定義されたサービスオブジェクトは、一般的な方法を提供し、クラスの名前。
- ファイルが持つ唯一のクラスによって、複数のクラスが含まれている場合は、予約語のパブリック宣言。
- パブリッククラス名は同じファイル名でなければなりません。
- データの例は、を指すクラス宣言変数。彼らは、クラスを参照する方法のいずれかになります。
5.3パッケージ
- パッケージングは、オブジェクトの特性です。これは、オブジェクトの変数のことを意味する独自の管理によっては、一般的に他のオブジェクトへの直接アクセスを許可しないとだけができる具体的な方法を介してアクセスされるような特性。
- 可視性修飾子の 3の合計:公共(パブリック)、民間(プライベート)と保護(保護)。
修飾されたパブリッククラスメンバーは、オブジェクトの外側に直接参照することができ、プライベート修飾クラスメンバーは、クラス、それらの定義でのみ使用することができる ;に含めるために、典型的には保護された継承関係クラス、同じパッケージ内のクラスは、AT缶直接参照パブリックとプライベートの介在カプセル化の間に、。
- クラスのアクセスを提供し、データサービス値変更のが、アクセス方法(アクセサメソッド)であるとセッター(ミューテータメソッド、)一般に「変数名は+アクセスを取得」と呼ばれ、「変数名を変更する+設定します。」
分析の5.4方法
- 例えば構造、方法。
public int computeArea(int length,int width)
{
int area=length*width;
return area;
}
public--修飾子
int--戻り値の型
computeArea--メソッドの名前(識別子)
int型の長さ/ INT width--参数
(任意)メソッドは例外をスローすることができることを示す句をスロー
メソッド本体 - {}内のコンテンツ
- return文のリターンヘッダは、戻り値の型を指定します
- 空戻り値の型は、returnステートメントが含まれているかだけで「返す;」が含まれていない文を
- コンストラクタは戻り値の型を返しません。
- return文に戻りますが、すぐにポジションを呼び出し、継続制御後
- メソッド宣言ヘッドパラメータと呼ばれるパラメータ(パラメータフォーマル)メソッドの値を呼び出すとき、メソッドに渡さが呼び出され、引数(実際のパラメータ)。
- 方法は、ローカルデータの宣言と呼ばれる唯一の方法で使用することができ、クラス内で宣言されたインスタンスデータと呼ばれる、それはクラスの任意の方法で使用することができます。
- コンストラクタ各オブジェクトに対応する変数を初期化し、名前は、クラス名と同じでなければなりません。
5.5静的クラスメンバー
- static修飾子が宣言した静的変数は、それがクラスのすべてのインスタンスで共有されています。
- ローカル変数は静的にすることはできません。
- 静的メソッドは、直接オブジェクトをインスタンス化する必要はありません、クラス名で呼び出すことができます。
5.6クラスの関係
- 依存性:別のクラスを使用して、クラス
- 重合:他のオブジェクトからオブジェクト、オブジェクトが持っている関係を形成するために重合になってきています
- この参照:現在実行されているオブジェクトへ
5.8メソッドのオーバーロード
- オーバーロードの方法を指し、同じメソッド名を使用して、異なる複数の方法が、それらの間にかかるパラメータの異なる数呼び出されるべきメソッドを区別します。
5.9テスト
- ユニットテスト:各モジュールのテストケースを作成する(方法)
- テスト駆動開発(TDD試験):
テストケースを書くために、
次いでによってそのテストケースを確実にするためにソースコードを書きます
教科書の学習と問題解決のプロセス
- 質問1:なぜ定数は、公開することができますか?
- 問題解決方法1:定数を変更することはできませんので、パッケージは公共の特性を変更しないように設定されているとして、その、本をリーフィング
- 質問2:なぜクラスがパッケージを必要ですか?
- 問題2ソリューション:
次のようにCSDN等、様々なフォーラムをコンサルティング、Baiduは知っていることで、要約されています:
コードの書き換えの減少率と増加の再利用
エラーレートの低減をコンパイルします
サードパーティの呼び出しを容易にするために、
セキュリティ保証クラス
プロセスで解決コードのデバッグおよび問題
- 質問1:PP5.3を書いて、その出力の割り当てはどのようにそれを知りませんした後、列挙型サイドとその変数側を作成
問題1つのソリューション:3.6あなたが本プログラムが表示されるまで、おそらくどのように列挙型の出力を理解しています。
- 質問2:PP5.3、参照コインクラスを書くことで、私はこのコードの意味は以下が何であるかを知りません
問題2ソリューション:検出は、2つの値が等しいかっこ:C言語との個人的な理解の浅印象によると、私は意味があると思います。等しい「ヘッド」が返された場合、同じ「テイルス」が返されない場合。
- 質問3:BoxTestにPP5.6を書くとき、単純に、オブジェクトの塗り状態BOX2を変更するコードを渡っフルにチューン、そして、そのような変更が見えることはできませんことを発見し、以下のようになりたい......
質問3溶液:ダニにコードを置き換えるために、あなたはこの機能を完了することができます。
- 質問4:変更の上に経験した、私は上記の問題解決方法が主な機能を以下のように変更が達成できない場合でも、プログラムを実行している時には完全な3の値を変更しません発見しました。
質問4ソリューション:それが原因で範囲のものとすることができる、私はあなたが正常値BOX2の成功を変更することができるようになります、試験方法で直接変更を行います。
- 質問5:PP5.13は結果のカードが同じスーツであることがわかっ操作手順の準備の時。
質問5ソリューション:コードセクションのキャストを使用して乱数を生成するときに、私は、乱数の生成の結果は一つの値だけで、あなたは括弧を追加することができ、全体を囲むことではない、発見しました。
コードホスティング
先週試験間違った質問の概要
間違った質問1
理由: \ Tタブで、\ nは改行であり、\ rはキャリッジリターンです。出力は次のようになります。
1 big bad wolf 8 the 3 little pigs
4 dinner2night
2つの間違った質問
理由:予約語は、定義済みの特殊文字を含むシステムであり、printlnのはSystem.out.objectの方法です。
3つの間違った質問
理由:剰余計算演算子%は、文字のすべてのタイプのために使用することができます
ペアピアレビューと
コメントは、学生のブログやコードを持っていました
その他(知覚、思考、など、別売)
非常に洗練されたデザインであるプログラム間の通信のチャンネル - Javaクラスのコードは、インタフェースを提供した構造、を慎重に分析した後に理解できるでしょう。
学習の進捗バー
コードの行の数(/蓄積を追加) | ブログ量(/蓄積を追加) | 学習時間(/蓄積を追加) | 重要な成長 | |
---|---|---|---|---|
目標 | 10,000行 | 30 | 400時間 | |
最初の週 | 208分の208 | 2/2 | 9/9 | |
第二週 | 466分の258 | 2/4 | 15/24 | |
第3週 | 693/1159 | 2/6 | 46分の22 |