• 1つ以上のインスタンスを持つことができない形態のクラス
• オブジェクト指向設計では、シングルトン(singleton)という
• スカラは、Javaのstaticに対応するキーワードがない代わりに、オブジェクトをstaticのように使用可能
• Javaではクラスの中に存在する静的コードとクラスコードを、自然に分離可能
• newキーワードでインスタンスを生成する代わりに、名前で直接オブジェクトにアクセス
2. コンパニオンオブジェクト(companion object)
• クラスと同じ名前を共有し、同じファイル内でそのクラスに一緒に定義されるオブジェクト
• アクセス制御の観点では、コンパニオンオブジェクトとクラスが一つの単位とみなされるので、それぞれのprivate、protected、フィールドとメソッドに互いに接近可能

3. シングルトンパターン(singleton pattern)
• シングルトンパターン(singleton pattern)
- ソフトウェアのデザインパターン
- コンストラクタが複数回呼び出されても、実際に作成されるオブジェクトは一つ
- 最初の作成後呼び出されたコンストラクタ:最初のコンストラクタが生成したオブジェクトをリターン
- 主に、共通のオブジェクトを複数生成して使用するDBCP(DataBase Connection Pool)のような状況でよく使用
• 参考:staticの場合
- 静的変数としてオブジェクトの作成→アプリケーションが実行されるときにオブジェクトの作成
- オブジェクトが使用される前に、リソースを占める→資源の浪費
_________________________________
4. ケースクラス(case class)
• ケースクラス
- 自動的に生成されたメソッドのいくつかを含むクラス
- 自動的に生成されたコンパニオンオブジェクトを含む→このコンパニオンオブジェクトも自動的に生成された独自のメソッドを持っている
- ケースクラスを使用せずに直接該当するメソッドとコンパニオンオブジェクトを追加して、同じ機能を実装可能
名称
|
位置
|
説明
|
apply
|
オブジェクト
|
ケースクラスをインスタンス化するファクトリメソッド
|
copy
|
クラス
|
要請の変更事項が反映されたインスタンスのコピーを返す
|
equals
|
クラス
|
他のインスタンスのすべてのフィールドが、このインスタンスのすべてのフィールドと一致する場合はtrueを返す。演算子==としても呼び出し可能
|
hashCode
|
クラス
|
インスタンスのフィールドのハッシュコードを返す。ハッシュベースのコレクションに有用
|
toString
|
クラス
|
クラス名とフィールドをStringに変換
|
unapply
|
オブジェクト
|
インスタンスをそのインスタンスのフィールドのチューブで抽出してパターンマッチングにケースクラスインスタンスを使用できるようにする。
|

_________________________________
5. トレイト(trait)
• トレイト
- 多重継承を可能にするクラスタイプ
- スカラはinterfaceがないが、traitで代替可能。
- スカラのtraitは実装可能
- クラス、ケースクラス、オブジェクト、トレイトは、複数のクラスを拡張することができないが、同時に複数のトレイトを拡張することはできている
- ミックスイン(extendsキーワードを使用)の順番によって呼び出しメソッドが決まる
- 線形化(linearization):継承されるクラスとトレイトの水平的なリストを受けて、クラスが別のクラスを拡張する垂直チェーンに再構成する段階

_________________________________
6. スカラー開発環境
• IDE
- Eclipseの(プラグインが必要)
- ScalaIDE(Eclipseがベース)
- IntelliJ IDEA
• IntelliJ IDEA
- スカラホームページ(https://www.scala-lang.org/)で推奨しているIDE
- スカラIDEとして広く使われる
- Ultimate edition、Community edition
• ビルドツール
- SBT(Scala Build Tool):ユーザーが最も多い。事実上の標準
- Maven
- Gradle
_________________________________
• オブジェクトは、複数のインスタンスを持つことができない形のクラスで、これによりシングルトンパターンを実装可能である。
• スカラには、Javaにはあるstaticキーワードはないが、オブジェクトをstaticのように使用することができる。
• オブジェクトを使用して(Javaでは、同じクラスに存在した)静的コードとクラスコードを自然に分離することができる。
• ケースクラスは、自動的に生成されたいくつかのメソッドを含んでいる、インスタンス生成が可能なクラスであり、ケースクラスの利点は便利さにある。
• スカラのトレイトは、線形化を通じて複数の継承を可能にするクラスタイプである。
• スカラのIDEには、Eclipse、EclipseベースのScalaIDE、IntelliJ IDEAなどがある。
• スカラービルドツールはSBT(Scala Build Tool)、Maven、Gradleがあり、SBTが事実上の標準とみなされる。
0 件のコメント:
コメントを投稿