【初学者向け】オブジェクト指向をJavaで理解する vol.1

IT

はじめに

  • 開発はある程度できたけど、設計もできるようになりたい。
  • 設計って何に着手したらいいのかよくわからない。

こんな状況だったので、何かそれに近づける手段として学べるものがありそうか。AIに尋ねてみました。

クラウド技術を使って設計を学びたいです。どんな本やサイトがおすすめですか

AI
AI

書籍

  • AWSではじめるクラウドセキュリティ
  • クラウドエンジニアの教科書
  • 図解まるわかり クラウドのしくみ

サイト

  • AWS無料学習サイト
  • Google Cloud Skills Boost

多分、なんか違うな〜と思い検索してみたところ以下の記事がヒットしました。

設計を学びたいときに読みたい本一覧 - Qiita
これは何の参加記事です。エンジニアとして開発をしていく以上、設計についての知識を身に…

どうやらオブジェクト指向が設計を学ぶいい教材になるみたいです。これをきっかけに学んでみようと思いました。

オブジェクト指向とは

ここからJavaをベースに考えていきます。開発途中で何か条件を追加したいときがくるとする

class NonObject{
	public static void main(String[] args){
		int[] score = {80,90,100}
		String[] name = {"佐藤", "村山", "寺島"}
		
		for(int i = 0; i < score.length; i++){
			System.out.println(name[i] + "さん: " score1[i] + "点");
		}
		
	}
}

1つの変更がおきるとして、それに付随して関連する場所をつぎつぎと変更しないといけない。

人と情報をわけて管理できないのか?データをわけてみるといいのでは?

そこで生まれたのが、このオブジェクト指向。オブジェクトを中心にしてプログラムを作る考え方です。

情報を属性と操作に分けた人類の英知は素晴らしいなと思います笑

オブジェクト指向はこんないいことがある

オブジェクト指向のメリットをいくつか取り上げます。

  • メンテナンスしやすい
  • 開発効率が早い
  • 機能追加しやすい

こんなメリットが存在します。

mainのメソッドに直書きしていってもいいですが、効率わるいよな〜って思いますね

オブジェクト指向の基本であるクラスとオブジェクト

オブジェクト指向にはクラスとオブジェクトという2つの考え方が存在します。この2つを簡潔に解説します。

クラスとは

シンプルに設計図のことを指します。

では設計図の中には何が存在するのか?以下、2つが存在します。

  • 属性(何のデータをもっているか)
    • 名前
    • 英語
    • 数字
  • 操作(何の処理をするのか)
    • 点数を数える
    • 文字を出力する

オブジェクトとは

クラスから作られる実体のことを指します。具体的には何かモノを指します。

設計図があれば、いくつでもモノをつくることができますね

クラスとは

具体的にみていきましょう。クラスは実行用クラスと設計図クラスの2つが存在します。

実行用クラスとは

  • プログラムのエントリーポイントとなるmainメソッドを含むクラスです。このクラスはプログラムの実行を開始し、他のクラスのオブジェクトを生成して操作します
public class MainClass {
    public static void main(String[] args) {
        // オブジェクトの生成
        Car myCar = new Car("ABC123", 0);
        
        // メソッドの呼び出し
        myCar.run(60);
        myCar.display();
        
        myCar.stop();
        myCar.display();
    }
}

設計図クラスとは

  • オブジェクトの構造と振る舞いを定義します。このクラスには属性(メンバー変数)操作(メソッド)が含まれます
public class Car {
    // 属性(メンバー変数)
    private String number;
    private int speed;
    
    public Car(String number, int speed) {
        this.number = number;
        this.speed = speed;
    }
    
    // 操作(メソッド)
    public void run(int speed) {
        this.speed = speed;
        System.out.println(number + "は" + speed + "km/hで走ります。");
    }
    
    public void stop() {
        this.speed = 0;
        System.out.println(number + "は停止しました。");
    }
    
    public void display() {
        System.out.println("ナンバー:" + number + ", 速度:" + speed + "km/h");
    }
}

1つの実行用クラスから始めて、システムの要件に応じて複数の設計図クラスを追加していくのが一般的なアプローチみたいですね

オブジェクト

クラスが存在する前提で、オブジェクトを利用します。オブジェクトはクラス(設計図)から生成されるインスタンス(具体的な実体)として存在します。

※クラスをもとにオブジェクトを作成することをインスタンス化といいます

定義の仕方は、クラス名 オブジェクト名 = new クラス名();として定義します

// クラス目の定義
Student stud1 = new Student();

// オブジェクト名.変数名
stu1.name = “すがばら”;

// オブジェクト名.メソッド名(引数)
stu1.setScore(80,90);

クラスから引っ張ってきてオブジェクトを生成する。このあたりはすっきりするのではないでしょうか。

おわりに

オブジェクト指向の基本概念である。クラスとオブジェクトを見ていきました。

  • オブジェクト思考は、短期的な開発にとっても長期的な運用にとってもいいことがあること
  • クラスは設計図であり、それから物体をつくっていくこと
  • クラスは属性と操作で構成されていること

などなどを触れていきました。次回はもっと便利な機能についてまとめていきたいと思います。

コメント

タイトルとURLをコピーしました