【Python入門】初めてのプログラミング(オブジェクト指向3)簡易電話帳の作成

※このサイトの記事内では広告を掲載している場合があります。

今回は、オブジェクト指向の具体的な使い方を学ぶために少し長めのプログラムで説明していこうと思います。

オブジェクト指向では、現実空間で起こることをモチーフにしてプログラムを組んでいきます。今回のテーマは、「簡易版電話帳の作成」ということで、氏名、住所などのメンバ変数を設定し、自由自在に扱ってみましょう!

  • 具体的なオブジェクト指向のコーディング例を見たい
  • さらに深く理解していきたい
  • 複数のクラスでのオブジェクト指向の利用例を知りたい

という方向けの内容です。

オブジェクト指向についての過去の記事もご確認ください。

【Python入門】初めてのプログラミング(オブジェクト指向)
【Python入門】初めてのプログラミング(オブジェクト指向2)

それでは頑張っていこう!

無料オンライン相談を活用しよう!

Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。

その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。

無料説明会を参加してみる!

簡易版電話帳の作成

プログラムの考え方

簡易版電話帳の作成ということですが、今回は、氏名と住所のみのメンバ変数を扱っていきます。変数が増えても基本的にセッターメソッドやゲッターメソッドばかり増えて理解するのに煩雑になると考えたからです。

今回のクラスは、「AddressBook」と「Person」の2つです。これらのクラスと、メイン関数をすべてつなげるとコードが実行できます。「AddressBook」には、「Person」クラスのオブジェクトを格納する電話帳のイメージで考えるとわかりやすいと思います。

電話帳の機能

  • 登録情報の一覧を表示
  • 登録されている人の「名前」から「住所」を検索
  • ある「住所」に住んでいる人をすべて抽出

実際には電話番号やメールアドレスなども必要ですが、なんせ「簡易版」なので許してください。

コードの紹介

アノテーションについて

アノテーションはよく聞く言葉ですが、別の言葉で言うと、メタ情報ですね。つまり、付加情報です。関数の横にアノテーションを付け加えることで、関数の理解を助ける効果があります。

「 -> ‘アノテーション’」と記述することで、メタ情報を追加できます。
また、アノテーションの情報は自由に書くことができます。

クラス:AddressBook

2行目の「persons」に格納するデータは、「Person」クラスのオブジェクトです。
試しに、この配列を見てみましょう。(すべてのコードを記述した場合)

これらのオブジェクトには、名前と住所がメンバ変数として格納されています。16進数(0x)で表されている暗号みたいなのは、保存されているメモリのアドレスです。気にしないでください。

関数「search_adress」と「search_person」は、検索単語を引数にして、検索結果を出力する関数になっています。これらの関数は処理内容的にはとても似ていますが、「人」、「名前」、「住所」の関係性を考慮する必要があります。

当たり前ですが、人には一意の「名前」が存在します。一方で、「住所」を指定しても一意の「人」を特定することはできません。例えば、「東京」で検索をかけた場合、「B」、「C」という複数の結果が出てきます。そのため、関数「search_adress」では、「名前」に対する検索結果を単純に返り値とします。そして、関数「search_person」では、検索結果をリストとして返します。

包括表記に関する記述法は過去の記事を参考にしてください。

クラス:Person

このクラスでは、基本的なコンストラクタや、ゲッターメソッドなので特に説明はないです。

メイン関数

3行目:AddressBookクラスのインスタンス生成
5行目:変数「persons」には、名前を設定しています。(A ~ Jさん)
10行目:「Person」クラスのインスタンス生成。メンバ変数:(name, adress)
11行目:3行目で生成したaddressBookに、オブジェクト「p」を登録

13 ~ 15行目は、AddressBookクラスのメソッドを順番に呼び出していきます。
13行目:登録されたデータの一覧表示
14行目:「A」さんの住所検索
15行目:住所が「大阪」である人を抽出

全体のコード

出力結果

ランダム関数を用いているので、毎回異なる出力になります。

ちゃんと想定している結果が出ていますね!

まとめ

今回はオブジェクト指向の使い方として、簡易版電話帳の作成を行ってみました。コード例を見て難しいと感じた方が多いのではないでしょうか。がっつりオブジェクト指向型プログラミングでした。フロー型プログラミングとは違い、全体の処理の流れがつかめないと感じるかもしれませんが、大型のプログラムになると逆に扱いが難しくなってきます。

オブジェクトの考え方や扱い方は今回の記述例で少しずつ慣れてきていると思います。
また別の記事で現実世界の処理をオブジェクト指向で考えてみる予定です。

最後まで記事を読んでいただきありがとうございます!

無料の説明会を有効活用しよう!

独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。

それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。

Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。

その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。

無料説明会を参加してみる!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA