$30 off During Our Annual Pro Sale. View Details »

Zope Component Architecture

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.

ucokfm

October 26, 2013
Tweet

Other Decks in Programming

Transcript

  1. Zope Component
    Architecture
    Presented by
    Ucok Freddy Marpaung
    [email protected]
    Python-ID Meetup
    Jakarta, 26-Oct-2013

    View Slide

  2. Apa itu ZCA?

    Konsep pemograman berbasiskan
    komponen di python

    Dapat disejajarkan dengan:
    – Microsoft COM (C++)
    – JavaBean (Java)
    – Mozilla XPCOM (Generic)

    View Slide

  3. Pendekatan OOP

    Pemograman berbasiskan object
    (Object Oriented Programming):
    – Subclassing
    – Delegation (Components)

    View Slide

  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()

    View Slide

  5. Delegation
    (Components)

    Component adalah object yang
    mendeklarasikan Interface
    object
    a component
    interface
    object
    an object

    View Slide

  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
    >>>

    View Slide

  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 “”, line 1, in
    TypeError: Required argument 'obj' (pos 1) not found
    >>>

    View Slide

  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

    View Slide

  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

    View Slide

  10. ZCA Ecosystem.

    View Slide