20182301 2019-2020-1「データ構造とオブジェクト指向プログラミング、」最初の4週間の学習概要

20182301 2019-2020-1「データ構造とオブジェクト指向プログラミング、」最初の4週間の学習概要

コンテンツの概要を学びます

  • コアを表すオブジェクト指向プログラミングのクラスは、状態オブジェクトの動作を規定する定義
    • オブジェクトが印刷とprintlnの方法、および文字列オブジェクトに接続されているtoStringメソッドに渡されたとき、toStringメソッドは、オブジェクトは自動的に呼び出します
public String toString()
{
    String result = Integer.toString(faceValue);
    return result;
}
  • あなたは変数を使用することができる場所の変数従属変数の宣言のスコープは、スコープが決定します
  • パッケージ
    • コードのみを呼び出すことができ、変数オブジェクトに直接アクセスすることはできません。
    • 可視性修飾子のアクセス制御クラスメンバー。、官民および保護
    • アクセス方法:のgetX;設定方法:SETX、これを通して、顧客がデータを管理することができます
  • リターン
    • メソッド指定された戻り値Typeヘッダであってもよい:基本的なタイプ、クラス名、予約語ボイド
    • この方法は、戻り値の同じタイプの種類と所定の方法ヘッドを返すべき
    • 唯一の方法は、メソッド本体の最後の行として文を返す必要があります
  • パラメータ
    • メソッドを呼び出すときに、引数をパラメータにコピーされます
    • 各エイリアスメソッド、およびパラメータの引数
  • コンストラクタ
    • 工事の方法は、任意の戻り値、またしても無効にすることはできません
    • これは、新しく作成されたオブジェクトを初期化するために使用しました
  • 静的変数
    • 例:プライベート静的int型カウント= 0;
    • 静的変数は、クラスのすべてのインスタンスで共有されています
    • メソッド内で宣言されたローカル変数は静的にできません
  • staticメソッド
    • 例:使用Mathクラスのメソッドは静的です
    • 公共の静的な無効メイン(文字列[] args)インスタンス化する必要なく、インタプリタにより実行静的なので、メインプログラムの使用。
    • 静的メソッドは、特定のオブジェクト上で動作しません
    • 静的メソッドは静的変数やローカル変数にアクセスすることができます
  • 集合
    • 形成された集合オブジェクトの他のオブジェクトが持っている関係を
    • 重合は、依存性の特殊なタイプです
  • このリファレンス
    • 例えば:もし(this.positise == pieces.positise)結果=障害;
    • この基準は、場所を示すために使用され
    • 同じ名前のコンストラクタパラメータに対応するインスタンス変数を区別するために使用(本のP128を参照してください)
  • メソッドのオーバーロード:複数のメソッドが同じメソッド名が異なるパラメータリストを使用できるように
    • メソッドが呼び出されると、制御フローはコードで定義された方法で転送されます
    • パラメータの数、及び注文タイプによって区別オーバーロードされたメソッドのバージョン
    • 例:異なる数のようなパラメータの種類、
  • テスト
    • 監査:設計やコードを評価するために使用される技術
    • 欠陥検査:エラーは見つけることができ、ブラックボックステスト
    • ユニットテスト:各テストのためのテストケースを作成します
    • 統合テスト:全体としてテスト
    • システムテスト:観測ニーズ
    • テスト駆動開発:次に、テストケースを書く、ソースコード

教科書の学習と問題解決のプロセス

  • 質問1:抽象クラスとインタフェースの違いは何ですか
  • 質問:1つの溶液書かれた特定のない抽象メソッド。または抽象化する、またはインスタンス化します
    • 非抽象メソッドが存在することができます抽象クラス、インタフェースメソッドは抽象的ですが限りインタフェース、インタフェースメソッドの定義は、すべての抽象クラスメソッドになるように、デフォルトの方法となりますが、要約を書いていない場合でも、それは抽象的です
    • インターフェースは抽象クラスであり、インタフェースが延びる抽象クラスであることを特徴とすることができます
    • 抽象クラスは、プライベートメンバ変数とメンバメソッドを持つことができ、インターフェイスメソッドはすべてデフォルトに変更されています:メソッドのパブリック抽象型を
    • インタフェース表示は、AA、BB、CCを拡張...というように、及び、表示インタフェースを実装するクラスは、表示AAを達成することができましょう。クラスは、クラスのインターフェイスは、複数の継承の例を達成することができ、複数のインターフェイスを実装する抽象クラスを継承することができBB CCのインターフェイス
    • 非抽象メソッド抽象クラスを継承することもできます。インターフェイスメソッドはすべて書き換える必要があり、公共およびすべてのパブリックメソッドです。
  • 質問2:新しい変数を作成するには、いくつかの方法があります。
  • 問題2ソリューション:
    • 新しいキーワード。包装工場のパターンは、このようにしてあります。
    • クラスはインターフェイスクローニング、クローンインスタンスを実装します。プロトタイプモデルは、アプリケーションの例です。
    • クラスローダでは、のnewInstance。反射、実施例のJavaの反射:春の依存性注入、動的プログラミング部エージェント
    • クラス、allocateInstanceメソッドのインスタンスを作成しますSun.misc.Unsafe。(OracleがJava9から安全でないクラスを削除することを計画していると述べたのJavaクラスは、直接、安全でない職員が使用することを推奨していません)
    • インタフェースの実装クラスのシリアル化、IOを介してデシリアライゼーションの流れが得られるクラス、インスタンスを読み取ります。
    • 静的変数を直接使用している場合
  • 質問3:ローカルおよびインスタンスデータの違いは何ですか?
  • 問題:(に図3溶液:)

  • 質問4:相互作用とは何ですか?
  • 質問4ソリューション:
    • コンストラクタ転送
    • メソッドのgetXとSETXことで
    • インターフェース

プロセスで解決コードのデバッグおよび問題

  • 質問1:私たちは、これを必要とする理由コイン(下記参照)、そこ以来isHeadなぜに書くのか?

  • 問題1つのソリューション:フリップ方法、初期状態にランダムコイン。
  • 質問2:アカウントは無料ですが、なぜでしょうか?

  • 問題2ソリューション:私は、これは初期与信限度されるべきだと思うの費用を進むことができます

コードホスティング

先週試験間違った質問の概要

  • オブジェクトのカプセル化(封装)を維持するために、我々はその1を除いて、次のすべてをしますか?
    • .Makeインスタンスデータは、プライベート
    • B .DEFINEインスタンスのデータにアクセスし操作するクラスのメソッド(クラスメソッドの定義は、データインスタンスにアクセスし、操作します)
    • C .Makeクラスのパブリックのメソッド
    • D .Makeクラスファイナル
    • 上記の維持カプセル化のE。すべて
    • 右:D
    • 原因:パッケージのクラスがデータを操作するために必要なデータとメソッドが含まれていることを意味します。適切にパッケージを保持するために、インスタンス・データは、クラス外部から直接アクセスされるべきではなく、インスタンス・データはプライベートであり、データのインスタンスにアクセスして操作する方法を定義します。他のクラスのオブジェクトを使用できるように、さらに、アクセスデータ・インスタンスと操作の方法が、開示されています。かかわらず、パッケージの継承を制御するための予約語「最終」。
  • 次のようにメソッド呼び出しのシーケンスを考えてみましょう:.メインはM1を呼び出し、m1はm2は立方メートルを呼び出し、m4はちょうど終了した場合、m2はM4を呼び出し、m3は方法の次のシーケンスを呼び出して考えてみましょう(実行を再開しますどのような方法で、M5を呼び出し:?主よ、平方メートルを呼び出しますM1を呼び出して、M1、M2呼び出し、平方メートル立方メートルを呼び出し、M4を呼び出し、その後平方メートルと、m3はM5を呼び出します。m4がちょうど終了した場合は、実行を再開しますどのような方法で)
  • そのスコープ、それが宣言された方法に限定される変数(n)は(変数のスコープは、メソッドの宣言に制限され、)(Nと呼ばれる)として知られています
    • .parameter(パラメータ、係数)
    • B .GLOBAL変数(グローバル変数)
    • C .LOCAL変数(ローカル変数)
    • D .publicインスタンスデータ(データの一般的な例)
    • E .privateインスタンスデータ(プライベートインスタンスデータ)
    • 正しい:C
  • クラスのコンストラクタは通常定義します
    • オブジェクトが初期化され.how
    • オブジェクトがインターフェースされる.how B
    • Cクラスのインスタンスデータの【選択数
    • クラス内のメソッドのD【選択番号
    • インスタンスデータ.IF Eは、直接オブジェクトの外にアクセス可能です
    • 右:
    • 理由:コンストラクタは、「構造」のオブジェクトに使用されるべきである、すなわち、データインスタンスの初期値を設定します。これは必要ですが、通常はそうされていません。インターフェース・オブジェクト・インスタンスのデータと決定法で使用される可視性改質剤。
  • 以下の方法ヘッダー定義は、構文エラーになります。public void aMethodを();
    • 右:真
    • 理由:理由は、それ構文エラー「;」シンボルの終わり。その代わりに、命令に続く括弧{}内のゼロ以上を必要とします。「;」抽象メソッドは次のようになります終わりますが、頭は抽象メソッドを定義していません。
  • 同じクラスの複数のオブジェクトが存在することができるが、所定のプログラム内の各クラスの1つのバージョンだけが存在することができます
    • 右:真
    • その理由は:定義ではなく、物理的インスタンスとして存在するものであり、それが存在する、抽象クラスです。新しいインスタンス化オブジェクトの使用の物理的な例を作成します。そのため、多くのString型のオブジェクトが、唯一のStringクラスがあります。
  • オブジェクトは、不適切なアクセスからのデータとメソッドを保護するためにカプセル化されるべきです。
    • 右:真
    • 理由:このパッケージには、概念である:それは偶然の(またはオブジェクト)誤用から保護されなければなりません。
  • アクセサとミューテータはよくカプセル化されたクラスへの制御されたアクセスのためのメカニズムを提供します。
    • 右:真
    • 理由:アクセスは、変数への読み取りアクセスを提供し、これらの変数は、それ以外の場合はアクセスできません。ミューテータは、アクセス不能の変数への書き込みアクセスを提供します
  • Javaは多重継承をサポートしていませんが、多重継承の能力のいくつかはでご利用いただけます
    • 正しいです:
    • .importingクラス
    • Bの.implementingインタフェース
    • C .overriding親クラスのメソッド
    • Dの.creatingエイリアス
    • E公共のではなく、protectedまたはprivate修飾子を.using
    • 正しい:B
    • 理由:このクラスは、インターフェイスの任意の数を実装するので、これらのインターフェイスは、このクラスで定義されたものと同じであるかのように、クラスの性質にインタフェースクラスを使用することができるからです。このクラスは、メソッドや定数のインターフェイスを継承します。さらに、クラスは、それによって直接的または間接的に複数のクラスを継承し、別のクラスを拡張することができます。これは多重継承とまったく同じではありませんが、それは、Javaの概念に非常に近いです

      ペアピアレビューと

  • 学習課題やブログワース:
    • クラスとパッケージの関係は何ですか?パブリッククラスは、それが存在し、それは同じクラスにファイル名を変更する理由は、具体的に何を修正しますか?(2330年)
    • 列挙型は、最終的にはかなり、無味薄暗いのようですか?(2311年)
  • コードは、学習や問題価値があります:
    • ランダムランダム、大文字と小文字を区別しない数学乱数。
    • nextChar(2303)を使用する場合、文字の入力方法
  • 14ポイント:スコアに基づいて、私はこのブログの得点を与えます。次のようにスコアは以下のとおりです。
    • 1分間の適​​切な使用のマークダウン構文
    • 完全な機能テンプレート1分
    • 教科書の学習と問題のプロセスに4点を解決
    • 2分でのコードのデバッグおよび問題解決プロセス
    • 感情、経験は大きな空の1分を残しません
    • 絶妙なタイポグラフィ1分
    • プログレスバーは、学習時間を記録し、1ポイント改善しました
    • コメントは真剣に、私は1分の問題やブログのコードを指摘することができます
    • 1分で、深さ、間違った質問を学習
    • ペアは、本物の1分を学びます

コメントは、学生のブログやコードを持っていました

  • ペア今週の学習
    • 20182326
    • ペアの写真
    • ペア学習コンテンツ
      • プラグインを使用するアイデア
      • クラウドは、コードをアップロードするためのリンク
  • 先週のブログピアアセスメントケース

その他(知覚、思考、など、別売)

今、徐々に学習の難易度を上げる、私は自分自身の学習、自分の知覚、彼らの理解と進歩を行く必要があると思います。

学習の進捗バー

コードの行の数(/蓄積を追加) ブログ量(/蓄積を追加) 学習時間(/蓄積を追加) 重要な成長
目標 5000行 30 400時間
最初の週 69分の69 2/2 30/30
二三週間 598分の529 3/5 55分の25
4週 443/1041 2/7 80分の25

最後に、「計画的な学習の時間」と「実際の学習時間」を記録してみてください、あなたが計画する能力を向上させることができるかどうかを確認。この研究は、非常に重要な仕事であるにも便利です。
推定式消費:Y = X + X / N 、Y = XX / Nを、 より頻繁に訓練し、X、Yが閉じます。

参考:なぜそんなにハード、ソフトウェアエンジニアリングソフトウェアを推定されソフトウェアエンジニアリングの推定法

おすすめ

転載: www.cnblogs.com/zhaopeining/p/11614558.html