Summer Institute for Computing Education

Comic Strip Analysis and Design Inheritance, Abstract Classes, and Polymorphism part1 Barb Ericson Georgia Institute of Technology May 2006 Georgia Institute of Technology Learning Goals Do an analysis for a comic strip Do a design for a comic strip Pull out a common parent class Generalization

Give an example of an abstract class Extend a parent class, but do something differently Specialization Understand polymorphism And how run-time or dynamic binding works Georgia Institute of Technology What do we mean by a comic strip? What parts does it have? What things should you be able to find out about one? Georgia Institute of Technology

A Comic Strip Has a name and an author Typically has 4 panels, but can have more or less The Comic Strip: Pears Before Swine Georgia Institute of Technology A Comic Panel Has a picture And one or more speech balloons Georgia Institute of Technology A Speech Balloon Is a rounded rectangle or ellipse with text

(words) in it Has a tail that indicates who is speaking The tail is shown as a triangle from the bottom of the rounded rectangle to the speaker Georgia Institute of Technology A UML Class Diagram Shows the design for an object-oriented solution ComicStrip author name

Shows each class as a rectangular box May include the fields and methods Shows the relationships between objects of the classes 1* ComicPanel 1 0* Picture

SpeechBalloon upperLeft tailEnd message Has a (association) Is a (inheritance) Georgia Institute of Technology Thought Balloons Are like speech balloons But they show what a character is thinking, not saying Use circles to connect balloon to thinker The Comic Strip: Ben

Georgia Institute of Technology How to Handle Thought Balloons? We could copy the class for speech balloon and save it out with a new name And change everywhere that has Speech to Thought But what if we later want to add something to both classes? We would have to add it in both classes Also, how would we handle the ComicPanel? Would it have 0 or more SpeechBalloons and 0 or more ThoughtBalloons? Georgia Institute of Technology

How to Handle Thought Balloons? We could make a new class ThoughtBalloon ComicStrip author name As a subclass of SpeechBalloon Since they are very similar But, is this right? Is a ThoughtBalloon a kind of

SpeechBalloon? 1* ComicPanel 1 0* Picture SpeechBalloon upperLeft tailEnd message ThoughtBalloon

Georgia Institute of Technology Be Careful with Inheritance! Only use it when the child is really of the same type of thing as the parent Not just to reuse similarities Instead pull out a common parent class And have both SpeechBalloon and ThoughtBalloon inherit from it Pull out all common fields and methods And put them in the common parent class This is also called generalization Georgia Institute of Technology

Generalization Move common fields and methods into a parent class And let the children classes inherit the fields and methods Easier to maintain than copying fields and methods Better than using inheritance when the child isnt really a kind of parent Makes it easier to add new children classes ComicStrip

author name 1* ComicPanel 1 Picture SpeechBalloon Georgia Institute of Technology 0* TextBalloon upperLeft tailEnd message

ThoughtBalloon TextBalloons What should a text balloon know how to do? It should know how to draw itself It will need a graphics context Used to do the drawing Add the draw method to the UML class diagram TextBalloon upperLeft tailEnd Message draw(Graphics g)

Georgia Institute of Technology Abstract Class Can we draw just a text balloon? What would we draw? We could draw the balloon and text What kind of tail would it have? We need to know what type of text balloon it is in order to draw the tail Which we will only know at run-time Cant predict what will be needed So TextBalloon is an abstract class One that you can not create an object from You can only inherit from it

And it will have an abstract method drawTail Subclasses will override draw or also be abstract Georgia Institute of Technology Try it Try to create a TextBalloon object using the interactions pane in DrJava Use the constructor that takes a upper left point (java.awt.Point), a width, the point of the tail (java.awt.Point) and a string. import java.awt.Point; TextBalloon balloon = new TextBalloon(new Point (23,33),100,new Point(50,40),Hi); What error do you get? Georgia Institute of Technology

How to Create an Abstract Class Add the keyword abstract to the class definition public abstract class TextBalloon Abstract classes often have abstract methods To create an abstract method add the keyword abstract to the method definition and end the method with a semicolon after the parameter list public abstract void drawTail(paramList); Georgia Institute of Technology

Exercise Run the main method in ComicPanel to see an example with both a speech balloon and a thought balloon Modify the main method to create your own comic panel with a speech balloon and a thought balloon Georgia Institute of Technology

Recently Viewed Presentations

  • Defining Elimination of Genital Warts - A Delphi

    Defining Elimination of Genital Warts - A Delphi

    A Delphi study . Delphi workshop. 8-item questionnaire containing elimination targets and definitions. Delphi is a well-known research method where a team of experts is consulted for achieving convergence of opinion concerning real-world knowledge.
  • Movie Reviews - Mrs. Brown's English Classes

    Movie Reviews - Mrs. Brown's English Classes

    A film reviewer also creates a dialogue. They place a movie in the social context of the times. For example, a good film reviewer in the 80s would have, and did, talk about the sort of hard bodied muscle men,...
  • Syncope, Seizure, and Swooning: A Case-Based Approach to

    Syncope, Seizure, and Swooning: A Case-Based Approach to

    There should not be clinical features of other nonsyncope causes of loss of consciousness, such as seizure, antecedent head trauma, or apparent loss of consciousness (i.e., pseudosyncope)." First, to define: Syncope is a SYMPTOM.
  • Diapositiva 1 - Esperti di Vulnologia

    Diapositiva 1 - Esperti di Vulnologia

    IRPO: sintesi endoteliale di NO. TBI > 0,20. LDF (Laser Doppler Flussimetria) Monofilamento di Semmens- Weinstein. Filo di naylon. Pressione di 10 gr. Perpendicolare alla superficie cutanea e lievemente premuto (1,5 sec).
  • Access to controlled drugs for medical purposes: a

    Access to controlled drugs for medical purposes: a

    • Establishment of penal provisions for contraventions of the above requirements. Provisions of the Conventions • Limitations on the number of days" supply that may be provided in a single . prescription;
  • Paediatric & Adolescent Gynaecology Referrals

    Paediatric & Adolescent Gynaecology Referrals

    Fiona Cowan & Sarah Flint. BMJ Careers, December 2012 The Canadian Conference on Medical Education Quebec City, April 2013 Poster presentation at the RCOG World Congress in Liverpool June 2013 References Kroenke K. Mentorship. SGIM Forum. 2001; 24:3-8 Levinson D....
  • IRLP LINKING Peter Barry, VA6PJB / KE5HQC 02/10/20

    IRLP LINKING Peter Barry, VA6PJB / KE5HQC 02/10/20

    Sample analog voice with PC sound card to get a continuous mono 16-bit digital stream of raw audio at 8000Hz (120000 bps). 2. ... While repeaters "A" and "B" are connected, all local traffic on each repeater will be heard...
  • Ecology WebQuest - GradeBookWizard

    Ecology WebQuest - GradeBookWizard

    Ecology Journal Project Fifth Grade Science Troy Intermediate * * Poetry Extensions Write a poem about ECOLOGY choose on of the following formats.