LoginSignup
3
0

More than 3 years have passed since last update.

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

Posted at

はじめに

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は大切だなと感じました。
明日は、クラスのアクセス制限やコンストラクタ、デストラクタを記事にします。
ありがとうございました。

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0