Help us understand the problem. What is going on with this article?

はじめてのC++ 【52日目】

More than 1 year has passed since last update.

はじめに

Robocupという大会があり、そのための開発で記事を投稿している暇がありませんでした。
一段落ついたので、また記事を投稿しようと思います。
あと、userID @supopic → @suponji になんとなく変更してみたら、リンクが飛べなくなってしまった可能性があります。申し訳ありません。


そろそろ、オブジェクト指向に手を出してみようと思うので、過去の自分の記事に書いていただいたコメントやオブ指の本を見て学習していきます。
オブジェクト指向はクラスの概念が必要なのでクラスの基礎から復習していこうと思います。

クラスの復習

クラスとは?

プログラミングでいうクラスと、小学校や中学校のクラスはほとんど同じ意味です。個々のdata(人)をまとめるときにクラスを使います。

次のようなコードがあります。

noclass.cpp
int main() {

  std::string pig_name = "豚肉コロッケ";
  int pig_price = 100;
  int pig_point = 10;
  std::string pig_review = "やわらかくておいしい"

  std::string cow_name = "牛肉コロッケ";
  int cow_price = 500;
  int cow_point = 3;
  std::string cow_review = "肉汁がたまらない"

}

豚肉コロッケと牛肉コロッケの名前、値段、点数と評価を定義し、それぞれ代入しています。
このコードでは、コロッケの種類が二種類しかないので、面倒臭さは伝わらないかもしれません。仮に、コロッケの種類が100個あると、コロッケの種類ごとにまとめることが大変です。

クラスの使い方

上記問題を解決するのにクラスというものを使用します。
上のコードをクラスを使用して書いてみます。

class.cpp
#include <iostream>
#include <string>

class Product {
public:
  std::string name;
  int price;
  int point;
  std::string review;

};
int main() {

  Product pig;
  Product cow;

  pig.name = "豚肉コロッケ";
  pig.price = 100;
  pig.point = 10;
  pig.review = "やわらかくておいしい"

  cow.name = "牛肉コロッケ";
  cow.price = 500;
  cow.point = 3;
  cow.review = "肉汁がたまらない"

}

このようにクラスを使用することで、豚肉と牛肉が分けやすくなりました。

クラスの解説

クラスの定義

class Product {
public:
  std::string name;
  int price;
  int point;
  std::string review;
};

これは、オブジェクトの型を定義しました。 型というのは、 int型double型 と同じような型と認識していただいて問題ありません。ただし、言語が提供する方を 組み込み型 と言い、 Product のように ユーザーが定義した型を ユーザー定義型(user-defined type) と言います。

インスタンス生成

  Product pig;
  Product cow;

これは、 Product型 から pig というオブジェクトを実体化(インスタンス)したということです。クラスはオブジェクトを実体化することで使用することができます。
抽象的に言うと、
スクリーンショット 2019-08-22 22.09.29.png
こんな感じです笑。

終わりに

C++erレベルは初心者から入門者になった気持ちです。
クラスを自分の言葉で記事にすると、考えさせられるものがありやはりOutPutは大切だなと感じました。
明日は、クラスのアクセス制限やコンストラクタ、デストラクタを記事にします。
ありがとうございました。

suponji
GoでAPIサーバの開発してます。 プログラム書くのも好きだけど、設計とかセキュリティについて調べて考えるのも好き。
https://www.suptree.info
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした