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