26
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポケモン×Java】番外編 #1:ピカチュウって200種類おんねん~クラス~(Java・Python・JavaScript・Ruby)

26
Posted at

🎮 ピカチュウって200種類おんねん

ピカチュウにもいろんな種類がいるように
プログラミング言語にもいろいろな種類があるのだが、

プログラミングの基本的な概念である「クラス」を、
Java・Python・JavaScript・Rubyの4つの言語で比較してみました!

各言語で「ピカチュウ」というクラスを定義し、
違いを見てみよう!!

表形式で比較

プログラミング言語 静的型付け インスタンス化 継承 アクセス修飾子
Java 静的型付け(int、String等事前に決定) Pikachu pikachu = new Pikachu("ピカチュウ"); class Pikachu extends Pokemon あり
Python 動的型付け
(実行時決定)
p = Pikachu("ピカチュウ") class Pikachu(Pokemon): なし
アンダースコア(_)で目印のみ
JavaScript 動的型付け let pikachu = new Pikachu("ピカチュウ"); class Pikachu extends Pokemon *1 なし
アンダースコア(_)で目印のみ
Ruby 動的型付け型宣言不要 pikachu =Pikachu.new("ピカチュウ") class Pikachu < Pokemon *2 あり
(メソッドのみ)

※Java以外は調べただけなので、後学のために間違ってたら教えてください、

アクセス修飾子 ⇒ クラス外部からフィールド、メソッドが使えるかを制御する
*1 JavaScript:#でアクセスを制限できる(ES2022以降)
*2 Ruby  :フィールドにはアクセス修飾子なし(デフォルトでprivate)

他に共通してた処理・機能:
コンストラクタ(Java以外はフィールドをコンストラクタ内で宣言)
クラスメソッド、クラスフィールド、
インスタンスメソッド、インスタンスフィールド、オーバーライド

共通してないもの(Javaのみ)
オーバーロード、クラス内でのフィールドの宣言

1. Javaでのピカチュウのクラス

public class Pikachu {
    // フィールド(属性)
    private int hp;
    private String name;

    // コンストラクタ(インスタンス生成時に呼ばれる)
    public Pikachu(String name) {
        this.name = name;
        this.hp = 100; // 初期HP
    }

    // メソッド(行動)
    public void attack() {
        System.out.println(name + "が10万ボルトで攻撃!");
    }

    // ゲッター
    public int getHp() {
        return hp;
    }

    public String getName() {
        return name;
    }

    // 使用例
    public static void main(String[] args) {
        Pikachu pikachu = new Pikachu("ピカチュウ");
        pikachu.attack();
        System.out.println(pikachu.getName() + "のHPは" + pikachu.getHp() + "です。");
    }
}

2. Pythonでのピカチュウのクラス

class Pikachu:
    # コンストラクタ
    def __init__(self, name):
        self.name = name
        self.hp = 100  # 初期HP
        
    # メソッド(行動)
    def attack(self):
        print(f"{self.name}が10万ボルトで攻撃!")
    
    # ゲッター 
    def get_hp(self):
        return self.hp

    def get_name(self):
        return self.name

# 使用例
pikachu = Pikachu("ピカチュウ")
pikachu.attack()
print(f"{pikachu.get_name()}のHPは{pikachu.get_hp()}です。")

3. JavaScriptでのピカチュウのクラス

class Pikachu {
    // コンストラクタ
    constructor(name) {
        this.name = name;
        this.hp = 100;  // 初期HP
    }
    
    // メソッド(行動)
    attack() {
        console.log(`${this.name}が10万ボルトで攻撃!`);
    }

    // ゲッター
    getHp() {
        return this.hp;
    }

    getName() {
        return this.name;
    }
}

// 使用例
let pikachu = new Pikachu("ピカチュウ");
pikachu.attack();
console.log(`${pikachu.getName()}のHPは${pikachu.getHp()}です。`);

4. Rubyでのピカチュウのクラス

class Pikachu
    # コンストラクタ
    def initialize(name)
        @name = name
        @hp = 100  # 初期HP
    end

    # メソッド(行動)
    def attack
        puts "#{@name}が10万ボルトで攻撃!"
    end

    # ゲッター
    def get_hp
        return @hp
    end

    def get_name
        return @name
    end
end

# 使用例
pikachu = Pikachu.new("ピカチュウ")
pikachu.attack
puts "#{pikachu.get_name}のHPは#{pikachu.get_hp}です。"

あとがき

正直なところ、、、
どのピカチュウもかわいい💛💛💛

ではなく、
プログラミング言語って、
どの言語も面白いですよね!💛💛💛

ここまで読んでくれて、本当にありがとうございました。

「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。

次の投稿も、よろしくおねがいします。

💬 コメント・フィードバック歓迎!

「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!


26
7
0

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
26
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?