Successfully reported this slideshow.
Your SlideShare is downloading. ×

What's Wrong With Object-Oriented Programming?

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Java vs OOP
Java vs OOP
Loading in …3
×

Check these out next

1 of 25 Ad
Advertisement

More Related Content

More from Yegor Bugayenko (20)

Recently uploaded (20)

Advertisement

What's Wrong With Object-Oriented Programming?

  1. 1. /42@yegor256 1 Yegor Bugayenko What’s Wrong With
 Object-Oriented Programming
  2. 2. /42@yegor256 2 takes.org eolang.org “Elegant Objects”
  3. 3. /42@yegor256 3 “Java is the most distressing thing to happen to computing since MS-DOS.” —Alan Kay, 1997
  4. 4. /42@yegor256 4 “Object-oriented programming offers a sustainable way to write spaghetti code.” —Paul Graham, 2003
  5. 5. /42@yegor256 5 “OO seems to bring at least as many problems to the table as it solves.” —Jeff Atwood, 2007
  6. 6. /42@yegor256 6 Google Trends, May 2017 “OOP (blue) vs FP (red)” https://goo.gl/Ezmma8
  7. 7. /42@yegor256 7 “Objects are not data structures.” —Robert Martin, 2014 https://goo.gl/qmRFH4
  8. 8. /42@yegor256 8 —page 98 “A class is a collection of data fields that hold values and methods that operate on those values”
  9. 9. /42@yegor256 9 —page 40 “An object is some memory that holds a value of some type.”
  10. 10. /42@yegor256 10 “An object consists of some private memory and a set of operations.” —page 6
  11. 11. /42@yegor256 11 Theory Practicevs.
  12. 12. /42@yegor256 12 Getters & Setters 1
  13. 13. /42@yegor256 13 public class Book { private String title; public void setTitle(String t) { this.title = t; } public String getTitle() { return this.title; } }
  14. 14. /42@yegor256 14 Static Methods 2
  15. 15. /42@yegor256 15 public class BookUtils { public static void print(Book b) { System.out.println( “The title is: ” + b.getTitle() ); } }
  16. 16. /42@yegor256 16 NULL 3
  17. 17. /42@yegor256 17 Book b = library.find(“UML Distilled”); if (b == null) { // The book not found } else { System.out.println( “This is the book: ” + b ); }
  18. 18. /42@yegor256 18 Reflection 4
  19. 19. /42@yegor256 19 Book b = library.find(“UML Distilled”); if (b instanceof Ebook) { String pdf = Ebook.class.cast(b).getPDF(); }
  20. 20. /42@yegor256 20 Inheritance 5
  21. 21. /42@yegor256 21 pubic class Manuscript { protected String title; public String html() { return “<h1>” + this.title + “</h1>”; } } pubic class Book extends Manuscript { protected String title; public void rename(String t) { this.title = t; } }
  22. 22. /42@yegor256 22 Annotations 6
  23. 23. /42@yegor256 23 Book b = new Book(); String xml = m.marshall(b); @XmlRoot class Book { @XmlElement private String title; }
  24. 24. /42@yegor256 24 “I invented the term object- oriented, and I can tell you I did not have C++ in mind.” —Alan Kay, 1997
  25. 25. /42@yegor256 25 The article on the blog:

×