あしあと

明日の自分への情報発信

Javascript(4日目)とLinuxの学習(2日目)

今日(1/4)も引き続き JavascriptLinuxの学習を進める。今日はlinux標準教科書の2章目になり、インストールが課題になっているのでしっかり終わらせたい。

 

クラスを学ぶ

オブジェクトと関数

クラスを学ぶ前にまずはオブジェクトの復習。オブジェクトとは{}の中にプロパティ:値と書かれている文のこと。ちなみにプロパティとは属性のようなものである。

f:id:keropp1234:20200104091657p:plain

 

このオブジェクトの値には関数を用いることもできる。

この関数は定数名.プロパティ名();で呼び出せる。これはオブジェクトの呼び出し自体が定数名.プロパティ名で行えるので、あとは関数呼び出して使う形である();がくっつくだけである。よく使う形なので覚えること。

f:id:keropp1234:20200104092121p:plain

 

具体例は以下の通り。user.greet();で関数内の処理を呼び出せている。

f:id:keropp1234:20200104092622p:plain

 

オブジェクトの量産

実際のwebサービスでは大量のオブジェクトを扱っており、それをいちいち入力していくのは大変である。

f:id:keropp1234:20200104093440p:plain

 

そこで設計図(クラス)を作って、それを元にユーザーデータを生成する、というふうにすると楽に作れるようになる。

クラスはclass Class名 {}で作ることができる。基本的にクラス名の頭文字は大文字にすること。

f:id:keropp1234:20200104093747p:plain

 

そのクラスから実際にオブジェクトを作り出すには、new Class名();とすることで可能になる。これをインスタンス(実体、実像、実例。つまり設計図を元に作られた実物というニュアンス)と言い、画像の場合はAnimalインスタンスという。それとふと思ったのだが、関数でないのに();が出てきた。これは{}内の処理を呼び出す、という意味なのだろうか?

f:id:keropp1234:20200104094114p:plain

 

設計図の中身を設定する。

クラスの中身を設定する。それにあたってconstructor(建設者という意味)とその仕事(処理)内容を設定する。設定の仕方と言えばクラスの{}内にconstructor(){}を追記すればよい。

f:id:keropp1234:20200104095639p:plain

 

コンストラクタの処理

コンストラクタの処理はインスタンスが作成された直後に行われる。つまり、インスタンスを作るごとに毎回作成されるということ。

f:id:keropp1234:20200104100149p:plain

 

constructorにプロパティと値を追加する。

コンストラクタの中にプロパティと値を追加するには、this.プロパティ名 = 値

とすることで生成したインスタンスにプロパティと値を追加することができる。

ちなみにthisとはこのクラスのという意味である。

f:id:keropp1234:20200104101347p:plain

 

コンストラクタで設定したプロパティと値はその外でもインスタンス.プロパティ名とすることで呼び出すことができる。

f:id:keropp1234:20200104101659p:plain

 

インスタンスごとに値を変える。

先ほどまでのコードではインスタンス全てに同じ値として処理されてしまう。

そこでconstructor()の括弧内に引数名を入力することで、その引数をそのコンストラクタ内で処理できるようになる。

f:id:keropp1234:20200104104444p:plain

 

コンストラクタに引数として値を引き渡すには、new Class名()の括弧内に値を追加する。下の図では()内のレオと3が値として引数として渡され、name, ageとして使うことができる。あとはconsole.log(animal.name)とconsole.log(animal.age)

を書けばレオと3が出力される。f:id:keropp1234:20200104111332p:plain

 

 メソッドとは

メソッドとはインスタンス動作のようなもの。

f:id:keropp1234:20200104174258p:plain


 メソッドの使い方

メソッドはクラスの中で定義でき、「メソッド名() { }」とすることでメソッドが定義できる。メソッドは関数と似ており、関数のように中括弧「{ }」の中にそのメソッドで行いたい処理を記述する。()も忘れないように(書かずに演習で出力できなかった)

メソッドの呼び出し方も関数と似ており、インスタンス.メソッド名()で呼び出すことができる。

f:id:keropp1234:20200104174529p:plain

 ところで、コンストラクターでも似ているところがあると気がついたが、constructorはclass = nes が書き込まれた瞬間に自動処理されるもの、ということである(正直まだよくわかっていないが以下参照https://wa3.i-3-i.info/word13646.html)。今後進めていく中で理解したい。

 

メソッド内でメソッドを使う

メソッド内で「this.メソッド名()」とすることで、同じクラス内の他のメソッドを使うことができる。下の画像で言えばinfo内にあるthis.greet();という文は、このクラスのgreetメソッドを実行する、というように処理することができる。

f:id:keropp1234:20200104181657p:plain

 

 

Linux

virtualbox上にcentosのインストール完了。 初めてLinuxを起動したが思ったよりモダンな感じだった(勝手ながらPCに詳しい人だけがつかう極めて簡素なOSと思っていた...)

明日からは実際に触るようになるので、しっかり覚えていきたい。