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

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

forループ4.8.1イテレータとA

1.イテレータ

  • コレクション使用iterator()取得したイテレータ・クラス・オブジェクトがイテレータイテレータインターフェース(多型)を受け入れるようにインターフェイスを使用して実装
  • インターフェースメソッドを使用して反復子はhasNext()、さらなる次の要素が存在しない判定されました
  • 方法を使用してイテレータインターフェースは、next()セット内の次の要素をフェッチ

使用ループの2
列のセットを反復するために使用される、および

for (集合/数组的数据类型 变量名 : 集合名/数组名){
  System.out.println(变量名);
}

ライティングのクラス

1.クラスとオブジェクト

  • クラスは、オブジェクトの青写真です。
  • 各クラスは、オブジェクトの属性と操作のために定義されたクラスが含まれています。
    • オブジェクトの状態は、オブジェクトに関連付けられた属性によって定義されます。
    • オブジェクトに関連付けられたオブジェクトの動作の挙動によって定義されています。
  • データとクラスのメソッドは、クラスのメンバーと呼ばれます。

2. UMLのクラス図

3.静的クラス
のオーバーロードの方法:二つ以上のメソッドが同じ名前を持っています。
5.テスト:テストの目的は、エラーを見つけることによって、エラーを発見し、プログラムの品質を向上させるためにそれらを変更することです。

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

  • 質問1:イテレータとロビンのために
  • 問題1ソリューション
    それぞれが独自の利点効率を持っています:
  1. ArrayListの高速ランダムアクセス、およびループのために使用されるget()方法は、非常に高速サイクルのArrayListの中に、すなわち、ランダムアクセスが採用されます。
  2. シーケンシャルアクセスは比較的高速でのLinkedList、イテレータのnext()使用方法は、それほど速くイテレータで使用LinkedListのシーケンシャルアクセス方法です。
  3. 主にデータ構造決意の異なるセットに基づきます。
  • 問題2staticキーワード行うクラスメンバーの権限を微調整?
  • 問題2解決策:Javaがあるstaticキーワードは、変数やメソッドのスコープには影響を与えません。Javaではアクセスのみに影響を与えることができprivatepublic(を含むprotectedパケットアクセス)これらのキーワードを。
  • 質問3:できるthis静的メンバ変数が何にアクセス?
  • 質問3ソリューション:栗の場合
public class Main {  
    static int value = 33;
 
    public static void main(String[] args) throws Exception{
        new Main().printValue();
    }
 
    private void printValue(){
        int value = 3;
        System.out.println(this.value);
    }
}

thisそれを通して、現在のオブジェクトを表すnew Main()呼び出すためにprintValue、現在のオブジェクトを介して行われ、それをnew Main()生成されたオブジェクト。static変数は、オブジェクトによって享受されるので、値が間違いなく33です。方法の内部のローカル変数であり、不可能関連付けられ、出力は33です。静的メンバ変数オブジェクトとは無関係に、そのオブジェクトを介してアクセスしていないという意味ではありませんが、すべての静的メソッドと静的変数にアクセス(限り十分にアクセスできるよう)オブジェクトを介しています。printValuethis.valueprintValuevaluethis

  • 質問4:どのように、存在意義のために必要な言い訳を、「インターフェース」を理解するには?
  • スキーム4回答の質問:インタフェースは定数との組の抽象メソッドの集合である(抽象メソッドが実装されていない方法、すなわちないコード本体、インタフェースに実装されていない方法を指し、この方法は、ヘッダは、セミコロンのみパラメータリストが続きます)。インタフェースは、インスタンス化された各インタフェースで定義された抽象メソッドを実装するためにこのインタフェースを実装することにより、クラスすることができない、クラスはインターフェイスが実装を使用する必要が実装次に、インターフェース名が指定され、ヘッドのクラス宣言で予約語を、クラスの少なくとも一つを実装する必要があります抽象インターフェース方法、他の方法も定義することができました。複数のクラスが同じインターフェースを実装することができ、クラスは複数のインターフェイスを実装することができます。インターフェイスを実装する場合、クラスは、インタフェースが追加メソッドを定義することができます。シンプルなインターフェイスの例:
public interface Nameable
{
     public static setName(String Name);
     public String getName();
}

「Interfaceは、仕様です」と、この権利。「なぜ、あなたはそれがより便利である。このクラスの実装に直接書いていない、」どのようにこのインターフェイスは、それを実装するクラスであることを確認していますか?複数のクラスが同じインターフェイスを実装する場合は、プログラムは、彼らはそれにリンクされている方法を知っていますか?それが有用である多くの場所があることを実現するクラスではありませんので、我々は統一基準を必要としています。そして、さらにいくつかのプログラミング言語(オブジェクト-C)は、インタフェースと呼ばれるインタフェース、ダイレクトコールプロトコルを持っていません。統一基準の目的は、我々はすべて、これは何をしているか知っているが、具体的な操作方法の詳細を知りません。例えば:私はComparableを知っている。このインタフェースは、2つのオブジェクトを比較するために使用され、どのようにそれを比較するには?デジタル方法は、以上の数字を持っている、文字列は、文字列の比較方法、学生(クラスの独自の定義は)独自の比較の方法を持っています。その後、内部の(必ずしも数字オハイオ州)のコードをソートするための責任を別のオブジェクトには、間違いなくあなたは、2つのオブジェクトを比較する必要があります。両方のオブジェクトは、それをタイプは何ですか?、オブジェクトBを?確かに、>この構文bはコンパイルされませんではありません。int型、B?それは動作しませんか?彼は必ずしも数字、冒頭で述べました。....だから、同等が来ました。彼は、AB 2つのオブジェクトがComparableインタフェースを満たす、つまり、彼らは比較することができ、コンパイラに指示します。具体的に比較する方法を、このプログラムは知っている必要はありません。だから、彼はいくつかの特定の実装を必要とし、Comparableインタフェースは、のcompareToと呼ばれる方法があります。そして、この方法では、<、>などの演算子を置き換えるために使用されます。オペレータは、内蔵型を保持するためのコンパイラ(整数、浮動小数点)の代わりに、一般的な比較動作とを比較するため。あなたはすでにそのようなインタフェースを持っているように匹敵する内部など、独自のJDKライブラリを理解することができれば、彼らがプログラムのインタフェースを開発するときに使用する必要がある理由を理解するのは簡単です。

センスJAVAインタフェースで約4時(方法ステップの柔軟性を向上させるために)存在する
1、の重要性:抽象クラスとインタフェースは、二つの機構を抽象クラス定義をサポートします。;それは強力なオブジェクト指向のJava機能を与え、これらの二つのメカニズムの存在である
いくつかの開発を防ぐために(インターフェイスは、あなたがそれらのサービスを実装する必要があり、開発者に指示するだけでなく、ロックアウトされてネーミングされます:2、シンプルかつ規範)だけで理解できない他のプログラマにリードを命名する;
3、メンテナンスおよびスケーラビリティは、
4、セキュリティを、厳密さ:Interfaceソフトウェアは関与せず、外部サービスシステムのすべてを説明する疎結合を、達成するための重要な手段であります任意の特定の実装の詳細。

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

  • 質問1:Gitのアップロードの問題が発生したIDEA

  • 問題1つの解決策:現在のディレクトリがリモートリポジトリローカルディレクトリではないので、残酷に否定しました。
  • 質問2 MyDoc.java実行後に文字化け:

  • 問題2解決策:GBKを解決することができるファイルエンコードのための右下隅を設定します。
  • 質問3:int型32768 -32768は短いに変換されますか?
  • 問題解決策3:32768 =(1,000,000,000,000,000)2ショートに変換され、最上位ビットは符号ビットとなるので、差が負である、補体表される+1を反転10進数に変換される:011111111111 = 1111 + 1 = 1,000,000,000,000,000(32768)10。マイナス記号:-32768

コードホスティング

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

  1. あなたがランダムクラスを使用するプログラムを書くと言うが、あなたはのためのimport文含めることができないjava.util.Random(またはjava.util.*)。あなたがプログラムをコンパイルして実行しようとすると何が起こるでしょう。
    【選択プログラムは実行されませんが、それが不足しているクラスに関する警告をコンパイルします。
    B【選択プログラムは、コンパイルyou'llません不足しているクラスについての構文エラーを受け取ります。
    C【選択プログラムがコンパイルされますが、あなたは不足しているクラスに関する警告が表示されます。
    それはランダムクラスの任意のメンバーにアクセスしようとするときD【選択プログラムは、実行時エラーが発生します
    上記のEの.none
    正确答案を:B我的答案:A
    解析:欠落しているクラスには、コンパイラがこれらを検出し、あなたのプログラムが(行方不明クラスが未定義の変数やメソッドがあることを意味し、実行されませんエラーメッセージを発行します未定義の変数および/または方法が存在することを意味し....コンパイラはそれらを検出し、エラーメッセージを発行します。あなたのプログラムが実行されません。)
  2. 以下の列挙は、検討し
    enum Speed { FAST, MEDIUM, SLOW };
    た媒体の順序選択図値、2
    のB ORDINAL【選択値であるSLOW。1
    C【選択名序高速列挙値であるゼロであるFASTの
    速度列挙値のD【選択名がORDINALものです遅い
    の上記のE .None
    正解:C私の答え:
    解析:列挙型はZEROから始まる序数値を持っているが、左から右への順序(SO)の昇順に、Speed.FAST.ordinal( )ZEROは、Speed.MEDIUM.ordinal( )一つであり、Speed.SLOW.ordinal( )TWO(メダルです。左から右にゼロから序値を、そう、昇順に配置されてspeed.fast.ordinal()、0 speed.medium.ordinal()、1 speed.slow.ordinal())2 -です。
  3. あなたが書く必要があります、まあ、そのすべてのような二次レベルの場合にのみ用レベルパッケージ変更の一番上にインポートする必要はありません、しかし、:import package.*.*;
    .TRUE
    .FALSE B
    正解:私は答えるB:
    解析された唯一のimport文とを:シングル*(ワイルドカード)で使用します。次の2つのパッケージのすべてをインポートする必要がある場合は、それらを明示的に記述する必要があります。
    import package.A.*;
    import package.B.*;
  4. メッセージAN A StringにWHEREを渡すの例は?次のメッセージでで発生するパラメータのA列にメッセージがある
    .LENGTHの
    B .substring
    Cの.equals
    D .toUpperCase
    上記の.noneでEを、ITは、Aを渡すことはできませんメッセージで、パラメータとして文字列文字列
    正解:C私の答え:Bの
    解析:長さとtoUpperCaseのメッセージは、サブストリングが2つのint型のパラメータがあり、パラメータはありません。メッセージ文字列にパラメータがパラメータとして渡された受信した文字列と比較されるとイコールでは、文字列が渡されなければなりません。
  5. クラスのためのUML図において
    Aの.classes矩形として表される
    Bの.thereは、クラスの名前を含む部分であってもよい
    Cの.thereは、クラスの属性(データ)を含む部分であってもよい
    Dの.there部であってもよいですクラスのメソッドを含む
    上記のEの.ALL
    答案正确を:E我的答案:
    解析:これらの4つの属性が正しくクラスのUML表現を記述する。

ペアピアレビューと

学習の進捗バー

コードの行の数(/蓄積を追加) ブログ量(/蓄積を追加) 学習時間(/蓄積を追加) 重要な成長
目標 10,000行 30 400時間
最初の週 254分の254 2/2 21/21 簡単なプログラミングを開始します
第二週 386分の132 1/3 47分の26 Scannerクラスを使用することを学びます
第3週 632/1018 2/5 68分の21 いくつかの一般的なクラスを使用することを学びます
4週 663/1681 2/7 95分の27 JUnitテストとライティングのクラス
  • プランの学習時間:20時間

  • 実際の学習時間:27時間

参考資料

イテレータの深い理解
静的理解

おすすめ

転載: www.cnblogs.com/zdyyy/p/11614162.html