[RUBY] Résumé orienté objet

Préface

Je continuerai à résumer le plan orienté objet. J'ai également eu du mal à comprendre l'orientation des objets, je vais donc l'écrire de manière facile à comprendre et concise pour les débutants autant que possible. Masakari va bien, alors j'aimerais avoir de vos nouvelles.

1. Objet

Un objet signifie «objet» et «objet», et dans la programmation il se réfère à une collection de traitement de données. Dans Ruby, toutes les données telles que les tableaux, le hachage, les nombres et les chaînes sont des objets (mono).

2. Orienté objet

La programmation orientée objet est l'idée de créer et de manipuler des choses (objets).

3. classe

En orientation objet, une classe ressemble à un dessin de conception qui regroupe les données et le traitement. Fondamentalement, il peut être utilisé en créant un objet basé sur la classe

4. propriété

Les données qu'un objet possède sont appelées une propriété (attribut).

5. méthode

Le traitement de l'objet. En termes humains, c'est le processus par lequel un objet tel que "courir, marcher, s'arrêter" prend des mesures.

nom de la méthode def
Que veux-tu faire
end

Si, par exemple, pour définir une méthode hello pour appeler un "Hello"

def hello
  puts 'Bonjour'
end

hello #=>Bonjour

Cela devient comme.

6. instance

Une instance est un objet créé à partir d'une classe. Utilisez la nouvelle méthode lors de la création d'une instance.

class human
  def initialize(name)
    @name = name
  end

  def hello
   puts "Bonjour"
  end
end

human = human.new("Tokugawa Ieyasu")

La méthode d'initialisation définie ici est une méthode qui est automatiquement exécutée lorsqu'une instance est créée. La valeur "Ieyasu Tokugawa" est maintenant définie dans le nom d'attribut.

L'instance humaine créée à partir de la classe humaine a un nom unique, Ieyasu Tokugawa, et vous pouvez utiliser la méthode appelée hello. Vous pouvez créer un objet avec autant d'informations avec cette seule ligne.

7. Encapsulation

Cela signifie cacher les données et le traitement d'un objet qui n'a pas besoin d'être utilisé directement à partir d'un autre objet, et lors de son utilisation, cela signifie fournir un traitement créé pour une opération externe. Le concept de base orienté objet mentionné précédemment dans l'exemple de la voiture de course.

Il existe des encapsulations publiques et privées. Les méthodes décrites dans public sont accessibles de l'extérieur, mais si private est spécifié, une erreur se produira lors de l'appel.

Pour le public

class human
  #public =>Si rien n'est spécifié, ruby est par défaut public. Fondamentalement facultatif.
  def initialize(name)
    @name = name
  end

  def hello
   puts "Bonjour"
  end
end

human = human.new("Tokugawa Ieyasu")
puts human.name #=>Ieyasu Tokugawa est sorti

Pour privé

class human
  private
  def initialize(name)
    @name = name
  end

  def hello
   puts "Bonjour"
  end
end

human = human.new("Tokugawa Ieyasu")
puts human.name #=>Une erreur est sortie

8. Héritage

Prendre en charge la fonction d'un objet spécifique. Lors de la création de plusieurs objets similaires, la programmation de toutes les propriétés et méthodes une par une prend beaucoup de temps, mais en utilisant l'héritage, la même fonction peut être implémentée.

class Human
  def work
    puts 'J'ai marché'
  end
end

#Hériter de la classe humaine
class IeyasuTokugawa < Human
  def unification
    puts "Unifié le monde"
  end
end

IeyasuTokugawa = IeyasuTokugawa.new
puts IeyasuTokugawa.unification #=>Unifié le monde
puts IeyasuTokugawa.work #=>J'ai marché

Lors de l'héritage d'une classe, vous pouvez utiliser les méthodes définies dans la classe parente en plus des méthodes définies dans la classe elle-même. Dans l'exemple précédent, l'objet de classe "Ieyasu Tokugawa" peut exécuter la méthode "work" de la classe parent en plus de la méthode "unification".

Vous pouvez voir que non seulement les méthodes définies dans la classe mais aussi les méthodes définies dans la super classe (classe parente) peuvent être exécutées.

9. Polymorphisme

Qu'est-ce que le polymorphisme? Le polymorphisme est l'un des concepts et méthodes de la programmation orientée objet. Aussi appelé «diversité» en japonais. Cela signifie que la même interface est fournie pour différentes classes.

Le côté qui utilise la classe peut appeler la méthode sans être conscient de la condition réelle de la classe.

class Human

  def speak(voice='')
    "#{self.name}: #{voice}"
  end
end

#Héritage
class NobunagaOda < Human
  def speak(voice='Si ça ne sonne pas, tuez-le.')
    super
  end
end

class IeyasuTokugawa < Human
  def speak(voice='Faites bien flotter le navire et retournez bien le navire')
    super
  end
end

NobunagaOda = NobunagaOda.new
NobunagaOda.name = 'Oda Nobunaga'

IeyasuTokugawa = IeyasuTokugawa.new
IeyasuTokugawa.name = 'Tokugawa Ieyasu'

NobunagaOda.speak    #=>Oda Nobunaga:Si ça ne sonne pas, tuez-le.
IeyasuTokugawa.speak     #=>Tokugawa Ieyasu:Faites bien flotter le navire et retournez bien le navire

Il s'avère que même avec la même méthode de parole, le comportement change en fonction de la définition dans la classe.

10. Avantages et inconvénients de l'orientation objet

mérite

1. Maintenance aisée du programme

・ Étant donné que chaque programme peut être considéré dans un petit groupe, les programmes compliqués sont réduits. L'impact de la réparation sera réduit et la maintenance sera plus facile.

2. Peut être divisé

-Plus le système est grand, plus la mise en œuvre du programme est grande. L'orientation des objets est parallèle et peut être mise en œuvre par un grand nombre de personnes, augmentant ainsi la productivité. Il est également possible d'implémenter des fonctions similaires sans affecter les autres.

3. Meilleure qualité des programmes

-Comme chaque pièce est transformée en pièces, il est facile d'identifier la pièce problématique. Parce qu'il s'agit d'un programme cohérent, le code est hautement lisible et intuitif.

Démérite

1. Difficulté élevée et coût d'éducation élevé

・ Afin de jouer un rôle actif dans le site de développement, la connaissance de la lame de cuisson n'est pas utile. Il existe de nombreux concepts abstraits, donc pour les comprendre correctement Nécessite une expérience sur site

2. La capacité de conception est testée

-Bien que des concepts pratiques tels que l'héritage et le polymorphisme puissent être utilisés, la capacité de conception est indispensable pour améliorer la lisibilité et la qualité de l'influence, l'extensibilité et la similitude avec d'autres codes.

finalement

Je suis toujours débutant, donc je n'ai pas les compétences techniques. Je pense qu'il est important de garder au moins les concepts de base à l'esprit lors de l'écriture d'un programme. J'espère que d'autres débutants s'en souviendront ensemble.

Recommended Posts

Résumé orienté objet
Résumé
[Résumé] Pourquoi le rendre orienté objet
Résumé orienté objet par les débutants (Java)
Programmation orientée objet
Orienté objet
résumé du ransack
[Java] Orienté objet
Résumé de la programmation orientée objet utilisant Java
Résumé des connaissances Java
Résumé des génériques Java
java.lang Résumé 2 (chaîne)
Résumé de la formation TDD
Résumé relatif à Java
Mon résumé RxSwift ②
FizzBuzz orienté objet (Java)
[Java] Résumé orienté objet_Partie 1
Mon résumé RxSwift ①
Terme de programmation orienté objet
[Java] Syntaxe orientée objet --Constructeur
Notions de base orientées objet (Java)
Résumé du document Java 8
Quoi qu'il en soit, résumé de Dagger2
Résumé de la commande Docker
Résumé du routage Rails 6.0
Résumé de la refactorisation Eclipse
Calcul numérique orienté objet
[Java] Résumé orienté objet_Partie 2
Résumé de la syntaxe Ruby
Résumé de l'installation iPLAss
Résumé du document Java 11
rails db: 〇〇 Résumé
[Java] Syntaxe orientée objet --Package
Résumé Apache Apex