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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

12回答

3023閲覧

オブジェクト指向のイメージが湧きにくいです。

chocolatenyu

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

5クリップ

投稿2016/06/28 18:15

最近rubyの勉強を始めたのですが、オブジェクト指向のイメージがよくわかりません。クラスとインスタンスを作ることで具体的に何が便利になるのでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答12

0

最初のうちはそれほど気にする必要はないと思います。
自分でプログラムを書いて、いろいろ工夫するうちに利点が分かってくるはずです。

投稿2016/06/28 18:22

googlecus

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私もオブジェクト指向を勉強していて「クラスという金型でたい焼きというインスタンスを作る」とか「犬クラスと猫クラスがあり、それらは動物クラスを継承していて」とか言われても分からない人間でした汗

いろいろ解説記事を読んだ中で、一番しっくり来たのがドラクエでの例えですね(ドラクエ知らなかったらすみませんm(_ _)m

「スライムAがあらわれた。 スライムBがあらわれた。 スライムCがあらわれた」

ここでいう「スライム」がクラスに、「スライムA〜C」がインスタンスにあたります。

スライムというクラスは、スライムのパラメータ(データ)(ex. 攻撃力、防御力、経験値、ゴールド...etc)と行動(メソッド)(ex. 攻撃、仲間を呼ぶ、逃げる)という情報を持っています。クラス自体に実体はありません。

スライムクラスから生成されたインスタンスであるスライムA〜Cは、スライムクラスが持つデータとメソッドを持った実体です。実際に勇者と戦うのはインスタンスです。スライムA〜Cはそれぞれが独立しており、スライムAを倒してもB、Cは健在です。経験値もゴールドも各々のインスタンスからもらうことが出来ます。

他にも、カプセル化やポリモーフィズムなどの概念もドラクエを例に説明していた記事があったのですが失念してしまったので、見つかり次第貼ります。。。中途半端で申し訳ございませんm(_ _)m

投稿2016/06/29 01:43

k.tada

総合スコア1679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.tada

2016/06/30 01:54

おぉ、このスライドよくまとまってますね。ありがとうございます!
guest

0

古い記事ですが、次の一連の記事を読むとよいと思います。

投稿2016/06/28 22:19

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向の良さとしてあがるのは,たくさんありますが簡単に上げますと,

  • (意識すれば)疎結合になる
  • (多態性などをもたせれば) 機能拡張や,機能の再利用がしやすい
  • (カプセル化を正しく行えば)意図しない状態の書き換えを防止でき,安全である

というものだと思います.(他にもメリットはたくさんあると思います)

そして,これらの恩知を受けるような状況というのは,大規模プロジェクトなどです.
なので,趣味プログラミングでは,オブジェクト指向によって得られるメリットがわかりづらい事が多いです.

なぜ,いちいちクラスを分けて書かなくちゃいけないのだ.なぜプライベートにしないといけないのだ.どこからも見えたほうが便利だろ.と思いがちですが,

サービスが大きくなればなるほど,余計な情報が混じっていたりしており,混乱を招きます.
長期運用するような,サービスであれば,機能の増減もあります.
そういった時に真価を発揮します.

  • 疎結合になると何が嬉しいのか

http://blog.codebook-10000.com/entry/20131108/1383907001

  • カプセル化の重要性

http://qiita.com/rf141/items/859116606a35152bf715

  • オブジェクト指向という考え方が生まれた背景

http://qiita.com/hirokidaichi/items/591ad96ab12938878fe1

投稿2016/06/29 09:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例えば「ツイート」というクラスがあり、そのクラスはツイートの文章、ツイートのID、ツイートをした人といった情報を持ち、そのツイートに対していいねしたり、リツイートしたり、返信したりという操作ができる、のような設計になっています。

あくまでクラスはそういった設計だけなので、実際に「@hogeさんの2016年何月何日何時何分の『眠い』というツイート」のように特定の実体を指すものではありません。「ツイート」という概念とは何か を表したものがクラスです。

それに対して、インスタンスはそのクラスを基にした実体です。
インスタンスは上述したようなツイートIDやツイートした人などの情報を持っているので、そしていいねするなどの操作も定義されているので、そのインスタンス(ツイート)に対して簡単にいいねしたりリツイートしたりすることが出来ます。

重要なのは、そのインスタンスを利用する側は具体的に いいね はどのような方法で行うのかなど知らなくて良い点です。
具体的に「どうTwitterにプログラムからアクセスしていいねをするのか」を知っている必要があるのはクラスだけです。

投稿2016/06/28 19:23

syuilo

総合スコア393

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こちらがわかりやすいかもです。

http://javalove.hatenablog.com/entry/object-oriented

classは部品みたいなもので
車で例えると

車体
右後輪タイヤ
左後輪タイヤ
右前輪タイヤ
左前輪タイヤ

で成り立っていた場合、

車体ごとに毎回4つのタイヤを定義するのは手間です。

なので、4つのタイヤを部品として作っておき、
インスタンス化することで
プリウスやキューブのタイヤとして実装できます。

classにすることで効率がいいのだと思います。

SE8 Silver落ちた者の回答ですが、こんなところだと思います。

投稿2016/06/28 18:52

編集2016/06/28 19:07
earnest_gay

総合スコア615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向という考え方は突然ぽっと出てきたものではなく、
今まで連綿となされてきたプログラミング開発への改良の延長
と考えてます。なので、オブジェクト指向を単独でみた場合に
「なにがいいのか?」と言われても分かりにくいかも。

あと、大規模な開発をなんとかしたいという流れで
登場したものなので、小さなものを作ってるうちは
なかなか実感がつかめないかもしれませんね。

投稿2016/06/28 18:39

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2016/06/28 20:04

Wikipediaより引用 --- オブジェクト指向という言葉は失敗だったと語っている。 これは、本来オブジェクト指向が重視すべきは「オブジェクト」ではなく 「メッセージング」であるにもかかわらず「メッセージング」が おろそかにされているためである。特に言語の進歩において 「オブジェクト」や「クラス」の側面ばかり強調される傾向にあり
guest

0

本来のオブジェクト指向以前の状態だと思うので、クラスとインスタンスについてですが、

文字型って分かりますか。 もうとっくに便利に使いこなしていると思いますよ。
分かんなかったら C言語の文字列操作をやるといいですよ。

投稿2016/06/29 09:16

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

具体的なコードを読むのが一番です。
オブジェクト指向でも、汚く書くことができますので、特に良いコードを読むことをお勧めします。

ほかにも良い本があると思いますし、そこそこ古い本ですが、私は結城浩さんのデザインパターンの本で勉強しました。

投稿2016/06/29 04:41

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javaを4年やってますが、オブジェクト指向なにそれです。

投稿2016/06/29 03:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

過去に似たような質問があって、そこで自分のイメージを記載したのでよかったら見てみてください!(ちなみに妖精がーって書いてあるところですw)
https://teratail.com/questions/15207

投稿2016/06/29 02:25

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

適切な例は出ているので、参考になるかどうか解りませんが。
通信の例
httpの標準ポートは、80ですが
これを、ポート80とポート8080でサービスする場合に、
関数では、80用と8080用の変数を別々で持つ部分(配列など)が出てきます。
これが、2個位では大した事はありませんが、ポートを任意設定などとすると、
変数を幾つ持つか?、仕様上増えたら変数を増やすのか?という事になります。
ダイナミックなクラスでは、雛形のクラスを一つ用意して、new:実体化 する事で、
メモリーが許す範囲で、80、8080、任意のポートへの対応を済ますことが可能です。
COM / TCP / UDB / HTTP だけでなく、1:N、N:Nに相当する事をプログラミングすると、
オブジェクト、クラスの有難味を感じます。

関数呼出の例
関数型処理系では、パラメータ違いで、
同一関数名を使うことは出来ませんが、
関数ABC で、パラメータ Integer
関数ABC で、パラメータ IntegerA、SingleB
関数ABC で、パラメータDouble
と云う事はできず、
関数名を変える必要があります。
(その為、便利機能的付け焼刃が有る場合も。)
オブジェクトでは、多態性をサポートしていれば
同一の呼出名で、パラメータ数違い、
パラメータ種別の違いを扱う事ができます。
⇒作る方、使う方としては、
同一呼出名で、パラメータ違いを許容できる。
似たような機能を同一呼出名で呼出可能
オブジェクト型以前の処理系では、
使用するデータ型毎に、別名の関数が用意されていたりしました。

投稿2016/06/29 00:27

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問