Contando uma história com O.O.

download Contando uma história com O.O.

If you can't read please download the document

Transcript of Contando uma história com O.O.

2. Contando uma histria com Orientao a Objeto 3. - Ruby, Python, C++, C#, VB.NET, Java, Object Pascal,Objective-C e Smalltalk so exemplos de linguagens deprogramao orientadas a objetos.- ActionScript, ColdFusion, Javascript, PHP (a partir da verso 4.0),Perl (a partir da verso 5) e Visual Basic (a partir da verso 4)so exemplos de linguagens de programao com suportea orientao a objetos. 4. Conceitos bsicos de O.O.- Classe- Objeto/instncia- Atributo- Mtodo- Mensagem- Herana- Associao- Encapsulamento 5. Vou falar dos 3 porquinhos 6. ObjetoUm objeto capaz de armazenar estados atravs de seus atributose reagir a mensagens enviadas a ele, assim como se relacionar eenviar mensagens a outros objetos. Um objeto est associado comclasse.Ex.: Ccero, Heitor e Prtico. 7. AtributosSo as caractersticas do objeto, basicamente a estrutura dedados que vai representar a classe.Ex.: Nome, peso, altura, idade 8. Classes um conjunto de objetos, a classe define o comportamentodos objetos atravs de seus mtodos.Ex.: Animal, Pig, Wolf, House, TypeHouse 9. Vamos ver um pouco de cdigo :) 10. Animal name weight height agePig < Animal house_idWolf < AnimalHouse type_house_id color length width heightTypeHouse name 11. 1.9.3p194 :002 > p1 = Pig.create(name: Ccero) => #1.9.3p194 :012 > p2 = Pig.create(name: Heitor) => #1.9.3p194 :016 > p3 = Pig.create(name: Prtico) => # 12. 1.9.3p194 :005 > w = Wolf.create(name: "Lobo Mau") => #1.9.3p194 :006 > w.speak => "Aaauuuuuuu" 13. type_house = TypeHouse.find 1 => #1.9.3p194 :003 > p1.create_house(type_house_id: type_house.id, color: Amarela) => #1.9.3p194 :004 > p1.save => trueclass TypeHouse < ActiveRecord:Base has_many :housesendclass House < ActiveRecorBase belongs_to :type_house has_many :pigs, dependent: :nullifyendclass Animal < ActiveRecord:Baseendclass Pig < Animal belongs_to :houseend 14. 1.9.3p194 :011 > type_house = TypeHouse.find 2 => #1.9.3p194 :013 > p2.create_house(type_house_id: type_house.id, color: Marrom) => #1.9.3p194 :014 > p2.save => true 15. 1.9.3p194 :015 > type_house = TypeHouse.find 3 => #1.9.3p194 :017 > p3.create_house(type_house_id: type_house.id, color: Vermelha) => #1.9.3p194 :018 > p3.save => true 16. 1.9.3p194 :001 > w = Wolf.last Wolf Load (2.1ms) SELECT "animals".* FROM "animals" WHERE "animals"."type" IN (Wolf) ORDER BY "animals"."id" DESC LIMIT 1 => #1.9.3p194 :002 > w.blow_the_straw_houseVou soprar, vou soprar e sua casa vou derrubarTypeHouse Load (15.3ms) SELECT "type_houses".* FROM "type_houses" WHERE "type_housHouse Load (1.9ms) SELECT "houses".* FROM "houses" WHERE "houses"."type_house_id" = (1.1ms) BEGINPig Load (1.0ms) SELECT "animals".* FROM "animals" WHERE "animals"."type" IN (Pig) ANDSQL (1.6ms) UPDATE "animals" SET "house_id" = NULL WHERE "animals"."type" IN (Pig) ANSQL (1.6ms) DELETE FROM "houses" WHERE "houses"."id" = $1 [["id", 1]] (20.1ms) COMMIT=> [# w.blowing_wooden_houseVou soprar, vou soprar e sua casa vou derrubarTypeHouse Load (0.7ms) SELECT "type_houses".* FROM "type_houses"WHERE "type_houses"."id" = $1 LIMIT 1 [["id", 2]]House Load (0.8ms) SELECT "houses".* FROM "houses"WHERE "houses"."type_house_id" = 2(0.2ms) BEGINPig Load (0.7ms) SELECT "animals".* FROM "animals" WHERE "animals"."type"IN (Pig) AND "animals"."house_id" = 2SQL (0.7ms) UPDATE "animals" SET "house_id" = NULL WHERE "animals"."type" IN (Pig) AND "animals"."house_id" = 2 AND "animals"."id" IN (2)SQL (0.4ms) DELETE FROM "houses" WHERE "houses"."id" = $1 [["id", 2]](17.3ms) COMMIT => [#] 20. 1.9.3p194 :002 > w.blowing_brick_houseLobo - Vou soprar, vou soprar e sua casa vou derrubarPorcos - Lobo tolo, minha casa de tijolo=> nil 21. 1.9.3p194 :005 > w.chimney_climbLobo - vou comer esses porquinhos => nil1.9.3p194 :006 > w.entering_the_chimneyploft!!. O lobo caiu na panela de gua fervente(0.3ms) BEGIN SQL (10.8ms) DELETE FROM "animals" WHERE "animals"."type" IN (Wolf)AND "animals"."id" = $1 [["id", 4]](21.6ms) COMMIT => # 22. 1.9.3p194 :001 > Pig.singingQuem tem medo do lobo mau, lobo mau, lobo mau ... => nil