この本やっていきます。
第1部と第2部に分かれています。
第1部はif,for,配列とかのプログラミングの基礎
第2部がオブジェクト指向について
1部のプログラミングについては、わかっている場所も多少あり、読むのが逆につらいので第2部から読んでいきます。
ちなみに第1部ではdokojavaというブラウザの開発環境を使っていました。
長くなるので適当に分けてメモしていきます。
間違っていると思うので参考にしないでください。
今回は8章
オブジェクト指向とは
大規模なプロジェクトでも人間が把握できるようにいい感じに部品化すること
「人間が理解できるように」というのが大切な根本的な考えだったらしい!
大学の時いきなりインスタンスとかカプセル化とか言われて、オブジェクト指向は難しいものだと思ってたけど、教えられ方が悪かっただけなのかも
できるJava使いの人も、Javaは理路整然としていて好きって言っていた。
プログラムを変更しやすくなる
プログラムの一部を再利用しやすい
クラス・インスタンス・オブジェクト
クラスが金型でそこからインスタンスと呼ばれる実際に動くものを作る
インスタンス=オブジェクトだが、「クラス」もオブジェクトと呼ばれることがある。
なのでクラス インスタンス
クラス
クラスには属性と操作を書く
属性は
String name;
int hp;
操作は
void attack(){・・・}
など
属性のことをフィールドという?操作がメソッド?
フィールドはitemListのように最初の単語は小文字で、次の単語の頭は大文字にするという慣例がある。
Unityで作る一つのスクリプトはクラスだったのか!いやでも一つのスクリプトにclassが複数あることもあるか・・・私は書いたことないけど
MonoBehaviourの継承とか、他の要素も絡んでくる・・・
継承は後ろのほうの章でやるのでまた今度.
そもそもJavaとC#、C#とUnityc#が違うから分からない
メソッド
メソッドはクラスの中に作る
Main
mainメソッド(神の声)で他のクラス(登場人物のクラス)に指令を出すけど、メソッドはクラスの中に作らないといけないので、「mainクラス」(神様のクラス)というものを作る。
mainクラスはインスタンス化されるようなものではない。
クラス型
自分で定義したクラスは、intやstringみたいに型として使える。
その型で宣言した変数はクラス型変数
インスタンスは、クラス型変数に入れて利用する
一つのクラスから複数のインスタンスを作って命令を送る場合、識別するためにクラス型変数として名前を付けて、インスタンスをその中に入れる。
インスタンス生成
クラス名 変数名 = new クラス名();
Hero h = new Hero();
よく見るnewはインスタンスを作っていたのか~
Unityだと
transform.position =
new
Vector3(3.0f, 4.0f, 5.0f);
っていうのをよく使っていた。
最後に
オブジェクト指向で作らないという選択もある。
オブジェクト指向は現実に対応してそれぞれの人や部品をclassにするけど、単純に「長くなってきたからクラスを分割しよう」みたいな開発者の都合や機能の単位でクラスを作ることもできる。
それは非オブジェクト指向
あとオブジェクト指向は大規模なコードをわかりやすくするためのものだから、逆にHelloWorldをするだけだと、すごい大変だと思った。
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!");
}}
pythonだと
print("Hello, World")
だけだからな
初心者がhello worldやっただけだと、逆にわかりにくそう。