質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • PHP

    20901questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • オブジェクト指向

    294questions

    オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

PHPにおけるクラス図

解決済

回答 7

投稿

  • 評価
  • クリップ 9
  • VIEW 3,200

kuzurotto

score 388

会社から、「オブジェクト指向で会員制のサイト制作」を課題に挙げられています。

私は今まで手続き型のソース記述しかしていなくて、オブジェクト指向な記述をしていなくて
オブジェクト指向がどういうものかはわかっているのですが
例えば、それをログイン処理のクラス図に当てはめて考えるとクラス図すら書けない状態です。

現在は
「次の実装に入る前にログイン処理のクラス図だけはまず書いてください」
と言われています。

クラス図も作ったことがなくてあってるかどうかもわからないクラス図を提出すると少し違うといわれています。
イメージ説明

とりあえず今やるべきことは、オブジェクト指向に基づいたログイン処理のクラス図作成なのですが、
何かアドバイス頂けると助かります。

色々調べているので、オブジェクト指向がどういうものかは分かっているのです。

オブジェクト指向について超わかりやすく解説してみた
Javaのオブジェクト指向をエヴァで例えると超わかりやすい
ドラゴンボールで学ぶオブジェクト指向 改

それをログイン処理に、どう当てはめればいいのかが分からないのです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 7

+2

クラス図の書き方については他の方が回答されているようなので、具体的な案を書いてみます。

作成された図は拝見しつつ想像してみましたが、これだけの処理なら恐らく4つ程クラスがあれば足りるのではないかと思います。私の思う4つのクラスは下記。

①ログインクラス
②DB処理クラス
③汎用関数クラス(ハッシュ化したパスワードを戻すとかはココ)
④定数用クラス(エラー用文字列などを保持)

後、気になった点を一つ。「メール」と表記されていますが「メール」とは通常メールファイルを指します。ここでは恐らく「メールアドレス」をIDのように使うという事だと思うので、「メールアドレス」と表記した方が良いのでは?と思います。

参考までに。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+1

私は、まずログイン周りの機能を整理するため、短い文章で考えます。

「○○は、××する」というような文章で考えます。
私ならこのような感じでしょうか。
・ログイン機能は、バリデート・認証・セッション発行を行う。
・バリデート機能は、メアドやパスワードの文字種をチェックする。
・認証機能は、メアドとパスワードで認証する。
・セッション機能は、ユーザ情報からセッションを発行する。
・ユーザ情報リポジトリは、ユーザ情報を出し入れする。
・ユーザ情報には、メアドとパスワードのハッシュが含まれる。
・ログインフォームは、メアドとパスワードを受け付ける。
・ログインフォームは、ログイン機能でログインする。
・ログインフォームは、ログイン結果を表示する。

ここで「○○は、××する」の「○○」がインターフェースやクラスになります。
「××」が「○○」のメソッドになります。

クラス図は、これらクラスの静的な関係を表せばよいかと思います。
例えば、
・ログイン機能に、「バリデート・認証・セッション」が集約されている。
・ユーザ情報リポジトリに、ユーザ情報が複数ある。
・ユーザ情報には、メアドとパスワードのハッシュがある。
といったあたりでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

ログイン処理のクラス図

という表現がなんか違うかな~って気がする。
これって機能? をまとめたものですよね。
自分のイメージでは、もっと大まかに
データと処理を分離させる感じですかねえ。
ネットもいいですが、なんか書籍を買ってじっくり
勉強してからの方がいいかも。(まあ、そんなに
悠長な時間はないかもですが… ^_^;)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

こんな話なのかどうか解りませんが、代理検索。

クラス図の書き方
http://iwatam-server.sakura.ne.jp/software/devintro/classdiag/
'
クラス図 PHP
https://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3&lr=lang_ja&gws_rd=ssl#lr=lang_ja&hl=ja&tbs=lr:lang_1ja&q=%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3+PHP
クラス図
https://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3&lr=lang_ja&gws_rd=ssl

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

クラス図は一つの箱にクラス名とその属性(メンバ変数など)、その機能(メソッドなど)を記載します。

クラスが複数ある場合は、クラスの数だけ箱が必要です。

そしてそのクラス間の関係を線で繋いで表します。(継承や委譲など)

一度、これまでに会社で作成したクラス図を見せてもらったらどうでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

たぶん会社の人は、自身で考えてほしいという部分があると思いますので、ヒント程度に・・・

メソッドが一つまたは書けないことに疑問をもっていませんか?その疑問は正しくて、クラスは通常名詞でメソッドは動詞になります。(参考にされたクラス図を見てください。)

また、クラス同士は関係を持っています。”AがBを持つ”あるいは”AがBを呼び出す”のような関係です。方向性のない線で結ぶことは多くはありません。

とりあえずこの2点を意識して修正するともっとオブジェクト指向っぽくなるとおもいます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

クラス図は一つの「クラス」を一つの四角で表現します。提示された図では、メソッドとかが単独で四角で表現されているので少し違います。クラスとは構造体を拡張したような概念で、フィールドとメソッド(メンバ変数とメンバ関数)を含みます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    スプライトをタイル状に敷き詰める > 謎線

    俺のPCは呪われているのか。。 ところでこいつ(謎線)を見てくれ。 ネットで検索して出た対処わした。 *pixels Per Unit は99.9 *filte

  • 受付中

    unityのnetwork

    unityでマルチプレイのゲームを作成しています ですが、クライアント側で下記のエラーが出ます Failed to spawn server object, assetId

  • 解決済

    新しいページに移動

    複数の画面にわたってプログラムを書いていくときに、ひとつの場所(ViewController)に書いていたら長くなりすぎてわからなくなるので、もうひとつファイルを作ることなどは可能

  • 解決済

    追加したViewControllerへのイベントハンドラ

    ViewControllerについて質問です  一つのStoryBoardに複数のViewControllerを追加した場合、  1番目のViewControllerにはイベン

  • 解決済

    paginationの実装

    下記のコードでpaginationを実装をしましたが、数字のボタンをクリックしても次のページへ移動できません。 どうすれば次のページへ移動できますか? <?php $key

  • 解決済

    iPadのみで作ったホームページファイルをアップしたいです。

    前提・実現したいこと iPadでtextastic を使って、HTMLの簡単なウェブページを作っています。 サーバーもドメインも取得して、textastic でFTP変換もできたは

  • 解決済

    ファビコンのURLについて

    宜しくお願いいたします。 サイトによくファビコン(アイコン?)がURLで指定されているのを 見かけるのですが、そのURLが指定しているファビコンを実際に見るには どのようにアクセス

  • 解決済

    ワードプレス。p挿入及び自動形成の停止による改行が消える不具合

     前提・実現したいこと テキストエディタで改行をして見やすくする。  発生している問題・エラーメッセージ ワードプレスにて自動成形を停止、Pタグの自動挿入は残すコードを適応した

同じタグがついた質問を見る

  • PHP

    20901questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • オブジェクト指向

    294questions

    オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。