shimmyShow Webアプリ開発ブログ

プログラミングスクールTECH::CAMPを73期を卒業し、紙媒体で実施されている教育の根本を変えていくためのサービスを開発中。当ブログを読めば誰でも当該サービスを開発できるようにするため軌跡を記録中。

【Ruby/学習備忘録】オブジェクト指向とは何か

オブジェクト指向とは何か

オブジェクトとは・・・データと処理の集合  例:人物をオブジェクトとした場合
  データ:姓名(name)、性別(gender)、生年月日(birthday)、出身地(birthplace)、職業(occupation)
  処理:自己紹介(introduction_myself)

class Human
  def initialize(name, gender, birthday, birthplace, occupation)
    @name = name
    @gender = gender
    @birthday = birthday
    @birthplace = birthplace
    @occupation = occupation
  end

  def introduction_myself
    puts "私の名前は" + @name + "です。 " + 
    "性別は"    + @gender    + "です。 "+ 
    "生年月日は" + @birthday  + "です。 "+ 
    "出身地は"  + @birthplace + "です。 "+ 
    "職業は"    + @occupation + "です。 "
  end
end

shimizu = Human.new("shimizu", "", "1991/3/20", "岐阜県", "研究職")
shimizu.introduction_myself
用語説明

 Human
  クラス
  具体的なデータに関連付かないデータの抽象的な挙動を定義するもの
 shimizu
  Humanクラスの インスタンス
  クラスから生成される具体的なデータと処理をまとめたもの
 shimizu.introduction_myself
  インスタンスメソッド。
  インスタンスがもつデータを用いてデータを処理したもの

オブジェクト指向の目的

 オブジェクト指向はユーザーのためではなく、開発者のコミュニケーションを円滑にするためのもの
  ×ユーザー
  ○開発者
 オブジェクト指向は手続き型に比べコード行数が多くなる傾向にあるが、プログラムに機能追加が増えてくると、
 各メソッドが分離されているオブジェクト型の方が可読性がよくなる。
 上記のように「自己紹介する」というメソッドをHumanクラスの中に入れてしまうことで、仕様変更等に伴う手間を削減することができる。
 オブジェクト指向を用いて得られるメリットの中の1つが変更に強いこと。
 現在存在するアプリやサービスはユーザーにとっては、独創的なものに見えるが、今までのソフトウェア開発の歴史なかで真に新しい概念を用いて開発されるものはほとんどない。
 ほぼ今までに作られた仕組みを部分的に再利用して開発されている。
 オブジェクト指向でサービス開発する場合、将来的に追加されるであろう機能を予測してコーディングしておくことが求められる。
 システムエンジニアの設計力や予測力が重要になってくる。
 良いエンジニアとそうでないエンジニアを分けることができるのが想像力である。