工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++クラスとオブジェクト完全ガイド:オブジェクト指向プログラミングの実践

C++ クラスとオブジェクト

C++でクラスとオブジェクトを使ってデータと振る舞いをカプセル化する方法を、明確な実例とベストプラクティスで解説します。

なぜクラスを使うのか?

これまでのレッスンで関数と変数を学びました。プロジェクトが大きくなると、関連するデータと操作をグループ化することが、保守性と明確性のために不可欠になります。クラスを使えば、データメンバとメンバ関数を単一の論理ユニットにバンドルでき、オブジェクト指向プログラミング(OOP)——現代的C++設計の基盤——を可能にします。

例示: 部屋

長方形の部屋を考えます。length、breadth、height を格納し、面積と体積を計算する必要があります。クラスを使えばこれらを密に結合できます:

class Room {
public:
    double length;
    double breadth;
    double height;

    double calculateArea() {
        return length * breadth;
    }

    double calculateVolume() {
        return length * breadth * height;
    }
};

クラスの定義

クラスは class キーワード、クラス名、波括弧で囲まれた本体、末尾のセミコロンで定義します:

class ClassName {
    // データメンバ
    // メンバ関数
};

上記例では Room が設計図です。内部の変数を データメンバ、関数を メンバ関数 と呼びます。

オブジェクトの作成

クラスを定義するだけではメモリは確保されません。オブジェクトはその設計図から作られる具象インスタンスです:

Room room1; // 単一オブジェクト
Room room2, room3; // 1宣言で複数オブジェクト

オブジェクトは関数内、他のクラス内、グローバルなど、スコープが尊重されればどこでもインスタンス化できます。

メンバへのアクセス

ドット(.)演算子でメンバ関数を呼び出したりデータメンバにアクセスしたりします:

room1.length = 5.5;
double area = room1.calculateArea();

実例 1: 部屋の指標計算

#include <iostream>
using namespace std;

class Room {
public:
    double length;
    double breadth;
    double height;

    double calculateArea() {
        return length * breadth;
    }

    double calculateVolume() {
        return length * breadth * height;
    }
};

int main() {
    Room room1;
    room1.length = 42.5;
    room1.breadth = 30.8;
    room1.height = 19.2;
    cout << "Area of Room = " << room1.calculateArea() << endl;
    cout << "Volume of Room = " << room1.calculateVolume() << endl;
    return 0;
}

出力

Area of Room = 1309
Volume of Room = 25132.8

カプセル化: public と private

カプセル化はアクセスを制御することでデータを保護します。private 宣言されたメンバは外部から隠蔽され、publicメンバ関数を通じてのみアクセス可能になります。

class Test {
private:
    int a;
    void function1() {}
public:
    int b;
    void function2() {}
};

次の例ではデータメンバを private にし、public メソッドで初期化しています:

#include <iostream>
using namespace std;

class Room {
private:
    double length;
    double breadth;
    double height;

public:
    void initData(double len, double brth, double hgt) {
        length = len;
        breadth = brth;
        height = hgt;
    }

    double calculateArea() {
        return length * breadth;
    }

    double calculateVolume() {
        return length * breadth * height;
    }
};

int main() {
    Room room1;
    room1.initData(42.5, 30.8, 19.2);
    cout << "Area of Room = " << room1.calculateArea() << endl;
    cout << "Volume of Room = " << room1.calculateVolume() << endl;
    return 0;
}

出力

Area of Room = 1309
Volume of Room = 25132.8

さらに学ぶために

権威あるガイドラインについては、ISO/IEC 14882:2023 C++ 標準や、cplusplus.com、cppreference.com などの信頼できるリソースを参照してください。

C言語

  1. C++構造体とクラス:組み込み開発者のための実践ガイド
  2. C# クラスとオブジェクト:堅牢な OOP の基礎
  3. C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
  4. C# 部分クラスと部分メソッドを理解する
  5. C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
  6. C++フレンド関数とフレンドクラス:アクセス制御のマスター
  7. C++クラステンプレート完全ガイド:実践的なジェネリックプログラミング
  8. C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス
  9. C++ストレージクラス完全解説:スコープ、ライフタイム、使い方
  10. C++日付と時刻の完全ガイド:ctimeライブラリの活用
  11. Javaクラスとオブジェクト:実践ガイド