Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Zope Component Architecture

A259af08f16f05e14ec8432b0f7d5a72?s=47 ucokfm
October 26, 2013

Zope Component Architecture

Jika di C++ ada COM/XPCOM, di Java ada JavaBeans, maka Python sebenarnya punya ZCA sebagai framework untuk melakukan metode pemograman berbasis component.

Metode pemograman berbasis component akan sangat membantu kita dalam pembuatan dan pemeliharaan software berskala besar dengan tingkat pluggability yang sangat tinggi.

A259af08f16f05e14ec8432b0f7d5a72?s=128

ucokfm

October 26, 2013
Tweet

Other Decks in Programming

Transcript

  1. Zope Component Architecture Presented by Ucok Freddy Marpaung ucokfm@gmail.com Python-ID

    Meetup Jakarta, 26-Oct-2013
  2. Apa itu ZCA? • Konsep pemograman berbasiskan komponen di python

    • Dapat disejajarkan dengan: – Microsoft COM (C++) – JavaBean (Java) – Mozilla XPCOM (Generic)
  3. Pendekatan OOP • Pemograman berbasiskan object (Object Oriented Programming): –

    Subclassing – Delegation (Components)
  4. Subclassing class Buku(object): def __init__(self, judul): self.judul = judul self.halaman

    = 0 def hitung_tebal(self): return self.halaman * 3 >>> buku1 = Buku('buku1') >>> buku1.halaman = 50 >>> buku2 = Buku('buku2') >>> buku2.halaman = 100 buku1 50 buku2 100 class BukuTebal(Buku): def cetak_ketebalan(self): print self.hitung_tebal() print “ketebalan buku %s milimeter >>> buku1 = BukuTebal('buku1') >>> buku2 = BukuTebal('buku2') buku1 0 buku2 0 cetak_ketebalan() cetak_ketebalan()
  5. Delegation (Components) • Component adalah object yang mendeklarasikan Interface object

    a component interface object an object
  6. Interface • interface adalah dokumentasi yang menjelaskan secara dekripsi kemampuan

    suatu object • kemampuan suatu object identik dengan attribute dan fungsi yang dimiliki object tersebut buku1 ITebal class ITebal (Interface): halaman = Attribute('Berapa banyak halaman') def cetak_ketebalan(): “””Mencetak ketebalan suatu benda””” >>> buku1.cetak_ketebalan() 50 milimeter >>>
  7. Create Interface from zope.interface import Interface, Attribute class ITebal(Interface): halaman

    = Attribute('Berapa banyak halaman) def hitung_tebal(): “””Hitung ketebalan suatu benda dari halaman””” >>> coba = ITebal() Traceback (most recent call last): File “<stdin>”, line 1, in <module> TypeError: Required argument 'obj' (pos 1) not found >>>
  8. Create Component from zope.interface import implements from interfaces import Itebal

    class Buku(object): implements(ITebal) def __init__(self, judul): self.judul = judul self.halaman = 0 def hitung_tebal(self): return self.halaman * 3 >> from zope.component import implementedBy >> ITebal.implementedBy(Buku) True >> buku1 = Buku('buku1') >> buku1.halaman = 50 >> buku2 = Buku('buku2') >> buku2.halaman = 100 >> from zope.component import providedBy >> ITebal.providedBy(buku1) True buku1 ITebal buku2 ITebal
  9. Extending Component buku1 50 buku2 100 cetak_ketebalan() Create another Component:

    Content View Component buku1 50 cetak_ketebalan() buku2 100 cetak_ketebalan() Results: Adapted Components
  10. ZCA Ecosystem.