Thinking in C+:オブジェクト向けプログラミングのポイント

3066 ワード

ここ数日『Thinking in C++』を最初から読んでいて、確かにいい本だと思いましたが、今は自分の理解でそのポイントを整理して、自分の頭の中のものにしたいと思っています.
 
1.いくつかのキーワードの中国語と英語の対照
  • abstraction抽象
  • composition or aggregation(組合せ、重合)
  • inheritance継承
  • overrideカバー
  • polymorphismマルチステート
  • 2.Alan KayはSmalltalkの5つの基本的な特徴をまとめ、これらの特徴は純粋なオブジェクト向けプログラミングの方法を代表している.
  • Everything is an object.
  • A program is a bunch of objects telling each other what to do by sending messages.(プログラムは、互いに通信可能な一連のオブジェクトからなる)
  • Each object has its own memory made up of other objects.(既存のオブジェクトを組み合わせた新しいオブジェクト)
  • Every object has a type.(すべてのオブジェクトが1つのクラスに属する)
  • All objects of a particular type can receive the same messages.(同じクラスに属する異なるオブジェクトは同じ情報を受け入れることができる)
  • 3.オブジェクト向けの3つの基本的な特徴:カプセル化、継承、マルチステート
    パッケージ:The hidden implementation
    パッケージのメリット:
    1.利用者に実装を隠すことで、利用者に影響を与えることなく、後の実装を変更することができる.
        Because if it's hidden, the client programmer can't use it, which means that the class creator can change the hidden portion at will without worrying about the impact to anyone else. 
    2.クラスの使用者に操作すべきでないものを誤って操作させないことで、エラーの機会を減らすことができます.
        To keep client programmers' hands off portions they shouldn't touch-parts that are necessary for the internal machinations of the data type but not part of the interface that users need in order to solve their particular problems.
    3.利用者に必要な機能に集中させる.(自己理解)
     
    継承:Inheritance
    It's nicer if we can take the existing class, clone it, and then make additions and modifications to the clone. This is effectively what you get with inheritance.
    既存のクラスを再利用し、追加または変更します.
    based type/derived type(ベースクラス、派生クラス)
    You have two ways to differentiate your new derived class from the original base class. The first is simply add brand new functions to the derived class. The second and more important way is to change the behavior of an existing base-class function. This is referred to as overriding that function.
    派生クラスをベースクラスと異なる方法:派生クラスに新しいメソッドを追加する方法と、ベースクラスに既存のメソッドを変更する方法、すなわち上書きします.
    1つ目の方法はis-like-aで、2つ目の方法はis-aです.
     
    マルチステート:polymorphism
    マルチステートの古典的な例では、マルチステート個人は関数のパラメータにベースクラスを使用することを理解していますが、実際に呼び出すと、このベースクラスから派生したサブクラスが伝達され、このような操作は伝達されたパラメータによって異なる効果を得ることができます.
    void doStuff(Shape& s)
    
    {
    
        s.erase();
    
        s.draw();
    
    }
    
    Circle c;
    
    Triangle t;
    
    Line l;
    
    doStuff(c);
    
    doStuff(t);
    
    doStuff(l);
    

     
    4. public, private and protected
  • public修飾子は、この属性がすべての人に表示されることを示します.
  • private修飾子は、この属性がこのクラスのオブジェクトのみに表示されることを示します.
  • protected修飾子は、この属性がこのクラスのオブジェクトまたはこのクラスの派生クラスのオブジェクトのみに表示されることを示す.

  • 5.Componentグループ
    クラスを再利用する方法の1つは、別のクラスのオブジェクトを別のクラスのメンバーとして使用する組合せです.
    you can place an object of that class inside a new class. Your new class can be made up of any number and type of other objects.
     
    何か間違ったところがあったら教えてください!また、パッケージされた英語の単語は何ですか.encapsulation?