前提・実現したいこと
PHPにて、オブジェクト指向プログラミングを目指しています。
しかし、初めに、手続き型でプログラミングを学んだことから、なかなかオブジェクト指向での実装ができません。
そこで、次のプログラムを例にオブジェクト指向を実現するには、あるいは、みなさんだったらどう実装するかをご教授願えると助かります。
要求仕様
同じ長さの二つの文字列 A, Bが存在する。
A, Bを比較して、以下の条件で値を返す。
2つの文字列のスペルがまったく同じであれば、2を返す。
二つの文字列のスペルが1つだけ異なる場合、1を返す。
その他は、0を返す。
例)
A:"teratail"
B:"teratair"
この場合、1を返す。
該当のソースコード
PHP
1<?php 2 class Hoge{ 3 4 5 private $count = 0; 6 private $output = 0; 7 8 9 public function compare($a, $b){ 10 $this->count = 0; 11 for($i = 0; $i < strlen($a); $i++) { 12 if($this->isSame($a[$i], $b[$i]) == 1){ 13 $this->count +=1; 14 } 15 } 16 if($this->count == 0){ 17 $this->output +=2; 18 } 19 if($this->count == 1 ){ 20 $this->output +=1; 21 } 22 23 return $this->output; 24 } 25 public function isSame($a, $b){ 26 if ($a !== $b) { 27 return 1; 28 } 29 else{ 30 return 0; 31 } 32 } 33 34 } 35 $hoge = new Hoge; 36 echo ($hoge->compare("hoge", "hogu")); //1を返す 37 38?>
補足情報
個人的に気にかかっている点として、カウンタを使用していることです。
カウンタを使うのは手続き型のイメージがあります。
もし、カウンタを用いることが望ましくない場合、用いない場合の実装などを教えていただければ幸いです。
参考情報
オブジェクト指向の参考記事
https://ameblo.jp/principia-ca/entry-11876117369.html
問題の元ネタ(paizaは提出コードを公開できないので、内容を改変しています。)
https://paiza.jp/student/challenges/116/page/problem
回答5件
あなたの回答
tips
プレビュー