Building OO Systems with Roles

Building OO Systems with Roles

By Curtis Poe (‎Ovid‎)
Date: Monday, 3 August 2009 14:25
Duration: 40 minutes
Target audience: Corporate Perl
Language:
Tags: inheritance oo roles


This talk will explore the reasoning behind roles, how they're actually used and how we've implemented them at the BBC.

Many object-oriented programming languages (Java) forbid multiple inheritance. Others reverse the inheritance order to better control their API (Beta), and still others add all sorts of bells and whistles to get "safe" inheritance (Eiffel).

Inheritance is being used for sharing behavior when everyone seems to have a different idea about how to overcome its limitations. It's time to think about using roles for shared behavior. They're simple, easy to use and make solving tricky composition problems a trivial affair.


Attended by: Pedro Melo (‎melo‎), Herbert Breunung (‎lichtkind‎), Piers Cawley (‎pdcawley‎), Diego Kuperman (‎diegok‎), cjbradford, Curtis Poe (‎Ovid‎), Karl Moens (‎CountZero‎), Vincent Pit (‎vincent‎), Martin Schipany (‎ElCondor‎), Maroš Kollár (‎maros‎), Laurent Dami (‎dami‎), Cosimo Streppone (‎cosimo‎), Steffen Schwigon (‎renormalist‎), Renee Bäcker (‎reneeb‎), Andrey Shitov (‎ash‎), Damian Conway (‎damian‎), Jonathan Worthington (‎jnthn‎), Alex Muntada (‎alexm‎), Tobias Henoeckl (‎hoeni‎), Panu Ervamaa (‎pnu‎), Marcos Garcia (‎gulden‎), Gabor Szabo (‎szabgab‎), Jesse Vincent, Clinton Gormley (‎DrTech‎), Markus Wichmann (‎telemorphix‎), Jose Celestino (‎japc‎), Joaquín Ferrero (‎explorer‎), Roberto Henríquez, Giuseppe Maxia (‎gmax‎), Søren Lund (‎slu‎), Luis Motta Campos (‎LMC‎), Tina Müller (‎tinita‎), Fernando Vezzosi (‎Bucciarati‎), Jordi Porta, Maciej Czekay (‎Bruno‎), Marcel Grünauer (‎Marcel‎), Bernd Dulfer (‎busunsl‎), Jozef Kutej (‎jozef‎), Roman Baumer (‎rba‎), Carlos Pires (‎acmpires‎), Bálint Szilakszi (‎szbalint‎), Andrew Ford, Gianni Ceccarelli (‎dakkar‎), Thierry Douez (‎tdz‎), Mário Barbosa, Joerg Meltzer (‎codeacrobat‎), Rosellyne Worrall (‎rozallin‎), Alex Kapranoff (‎kappa‎), João Carreira, Jose L. Hernandez, Mark Stewart, Marco Neves (‎themage‎), Salve J. Nilsen (‎sjn‎), Abe Timmerman (‎abeltje‎), Mark Morgan, Tom Hukins, Michael Langner, Andy Armstrong (‎AndyA‎), Filipe Moreira, Rui Patinha (‎rfp‎), David Faux, Carlos Juan Diaz (‎cjuan‎), Lars Thegler (‎tagg‎), Michael Zedeler (‎mzedeler‎), Henrik Tougaard (‎htoug‎), Pedro Rodrigues (‎careca‎), Leo Lapworth (‎ranguard‎), Carl Mäsak (‎masak‎), Stan Sawa, Franck Cuny, Michael Kröll (‎pepl‎), Chisel Wright, Elizabeth Mattijsen (‎liz‎), Luís Mendes (‎big‎), Stefan Hornburg (‎Racke‎), Aristotle, Adrian Arnautu, Farley Balasuriya (‎Questorian‎), Adam Reeks, Raimon Grau, Elizabeth Cholet (‎zrusilla‎), Bartosz Jakubski (‎migo‎), Bogdan Lucaciu (‎zamolxes‎), Alexandru Nedelcu, Daan Baldewijns, Damon Davison (‎allolex‎), Markus Förster, Jacinta Richardson (‎jarich‎), Christian Westgaard (‎ComLock‎), Manuel Gomes (‎wagemage‎), Oskari Ojala (‎Okko‎), Jan Henning Thorsen (‎batman‎), Ricardo Marques (‎ricmarques‎), Drew Taylor (‎drewbie‎), Andreas Hetey, Braceta, Smylers, Chia-liang Kao (‎clkao‎), Peter Corlett, Alistair MacLeod (‎anm‎), jani, Lutz Gehlen, Pedro Frazão, Peter Edwards (‎peterdragon‎), Beatriz Nombela Escobar, Tobias Kremer (‎soulchild‎), David Leadbeater (‎dg‎), Nicolas Mendoza (‎nicomen‎), Tiago Pedroso, Andrew Beech, Jørgen Elgaard Larsen (‎elhaard‎), Henrique Alves (‎Halves‎), Paul Fenwick (‎pjf‎), Wieland Gmeiner,