プログラミングとコナン

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

こんにちわ!この記事はPythonの初学者のための内容となっております。
今回は、オブジェクト指向の具体的な使い方を学ぶために少し大きめのプログラムで説明していこうと思います。

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

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

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

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

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

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

プログラミングスクールに関しては下の記事で詳しく記述しています。

こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。

【全スクール無料体験あり!】プログラミングを学びたい人におすすめのスクール5選!

簡易版電話帳の作成

プログラムの考え方

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

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

電話帳の機能

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

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

コードの紹介

アノテーションについて

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

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

クラス:AddressBook

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

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

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

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

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

【Python入門】初めてのプログラミング(内包表記)

クラス:Person

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

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

メイン関数

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

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

全体のコード

出力結果

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

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

まとめ

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

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

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

プログラミングスクールに関しては下の記事で詳しく記述しています。

こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。

【全スクール無料体験あり!】プログラミングを学びたい人におすすめのスクール5選!

コメントを残す

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

CAPTCHA