diff --git a/chptr00/artwork/classhier.odt b/chptr00/artwork/classhier.odt new file mode 100644 index 0000000..4d61d31 Binary files /dev/null and b/chptr00/artwork/classhier.odt differ diff --git a/chptr00/artwork/kitchen.odt b/chptr00/artwork/kitchen.odt new file mode 100644 index 0000000..2fe6e7b Binary files /dev/null and b/chptr00/artwork/kitchen.odt differ diff --git a/chptr00/artwork/kitchen.png b/chptr00/artwork/kitchen.png new file mode 100644 index 0000000..f230fd1 Binary files /dev/null and b/chptr00/artwork/kitchen.png differ diff --git a/chptr00/artwork/rectclass.odt b/chptr00/artwork/rectclass.odt new file mode 100644 index 0000000..5d89747 Binary files /dev/null and b/chptr00/artwork/rectclass.odt differ diff --git a/chptr00/artwork/rectconstr.odt b/chptr00/artwork/rectconstr.odt new file mode 100644 index 0000000..62cb4f6 Binary files /dev/null and b/chptr00/artwork/rectconstr.odt differ diff --git a/chptr00/artwork/rects.odt b/chptr00/artwork/rects.odt new file mode 100644 index 0000000..f30c6d8 Binary files /dev/null and b/chptr00/artwork/rects.odt differ diff --git a/chptr00/artwork/umlmsg1.odt b/chptr00/artwork/umlmsg1.odt new file mode 100644 index 0000000..6ab1aad Binary files /dev/null and b/chptr00/artwork/umlmsg1.odt differ diff --git a/chptr00/artwork/umlobj1.odt b/chptr00/artwork/umlobj1.odt new file mode 100644 index 0000000..3ed0bd1 Binary files /dev/null and b/chptr00/artwork/umlobj1.odt differ diff --git a/chptr00/artwork/umlobj2.graffle b/chptr00/artwork/umlobj2.graffle new file mode 100644 index 0000000..d98854e Binary files /dev/null and b/chptr00/artwork/umlobj2.graffle differ diff --git a/chptr00/classhier-smaller.png b/chptr00/classhier-smaller.png new file mode 100644 index 0000000..d4569cd Binary files /dev/null and b/chptr00/classhier-smaller.png differ diff --git a/chptr00/classhier.png b/chptr00/classhier.png new file mode 100644 index 0000000..6525cce Binary files /dev/null and b/chptr00/classhier.png differ diff --git a/chptr00/kitchen-small.png b/chptr00/kitchen-small.png new file mode 100644 index 0000000..da02285 Binary files /dev/null and b/chptr00/kitchen-small.png differ diff --git a/chptr00/kitchen.eps b/chptr00/kitchen.eps deleted file mode 100644 index 0b3cb95..0000000 --- a/chptr00/kitchen.eps +++ /dev/null @@ -1 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 %%Title: kitchen.pict %%Creator: GIFConverter 2.3.7 of Jan 29, 1994 %%CreationDate: 3/13/04 12:45:05 PM %%BoundingBox: 0 0 129 82 %%EndComments save 100 dict begin /bdf {bind def} bind def /xdf {exch def} bdf /halftone % xdata ydata xsize ysize xpos ypos halftone {moveto scale /hgt xdf /wid xdf /halfbuf wid string def wid hgt 8 [wid 0 0 hgt 0 0] {currentfile halfbuf readhexstring pop} bind image } bdf 0 82 translate 1 -1 scale %Grayscale save 129 82 129 82 0 0 halftone 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff00ffffffffffff00000000000000000000000000000000000000000000ffffffffffff00ffffffffff000000000000000000000000000000000000000000000000000000ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffff00ffffffffffff00ffffffffffffffff00ffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffff0000ffffff0000ffff00ffff00ff000000ffff000000ffff0000ffff00ff0000ffffffffffffffffffffff00ffff00ff00ffffffffffffffff000000ffff00ff000000ffff00ffff00ffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffff00ffff00ffff00ffff00ff0000ffffffffffffffffffffffffff00ffff00ff00ffffffffffffff00ffffffffff00ff00ffff00ff00ff00ffffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffff00ffffffff00ffff00ff00ffff00ff00ffff00ffff00ffff00000000ff00ffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffff0000ffffff00ff00ffff00ff0000ffffffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffff00ffff00ffff00ffffffff00ffffffffffffffffffffffffffff00ffff00ff00ffffffffffffffffffff00ffff00ff00ffff00ff00ff00ffffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffff0000ffffff0000ffffff000000ff00ffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffffff00ffff00ff00ffffffffffffff000000ffffff00ff00ffff00ff00ffff00ffffffffffff00ff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffff00ffffffffff0000ffffffffffff00ffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff00ffffffffff00ffffffff00ffffffffffffffffffffffffffffffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffff0000ffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff00ffffffffff00ffffff000000ff00ff0000ffff00ffff000000ffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffff0000ffffffffffffffffffffffffffffffffffffffffffff0000ffffffff00ffffffffff00ffffffff00ffff0000ffffffff00ff00ffff00ffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffff00000000000000000000000000000000000000000000ffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ff00ffff00ffffffffffff00ff ff00 00ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ff00ffff00ffffffffffff00ff ff00 00ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffff00ffff00ffffffffff00ffff000000ffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000ffffffffff00ffffffffffffffffffffffffffffffffffff00ffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff0000ffffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000ff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00000000ff000000ffff0000ffff00ffffff00ffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffff00ffff00ffff00ffff00ff00ffff00ffff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff000000ffffff00ffff00ffff00ffff00ff00ffff00000000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffff00ffff00ffff00ffff00ffffff00ffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff000000ffffffff00ffff0000ffffffff00ffffffff0000ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffff0000ffffff0000ffff00ffff00ff000000ffff000000ffff0000ffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffff00ffff00ffff00ffff00ff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff000000ffff0000ffffff0000ffff00ff0000ffffffffffffffffffff ff00 00ffffff00ffffffffffffffff00ffffffff00ffff00ff00ffff00ff00ffff00ffff00ffff00000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ff00ffff00ff00ffff00ff0000ffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffff00ffff00ffff00ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffff0000ffffff0000ffffff000000ff00ffff00ffffff00ffff0000ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff00ffff00ff00ffff00ff00ffff00ff00ffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff000000ffff0000ffffff0000ffff00ffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff ff00 00ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ff00 00ffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff ff00 00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ff00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000 restore %%EndImage end restore %%Trailer showpage %%EndEPSF \ No newline at end of file diff --git a/chptr00/kitchen.png b/chptr00/kitchen.png new file mode 100644 index 0000000..f230fd1 Binary files /dev/null and b/chptr00/kitchen.png differ diff --git a/chptr00/rectclass-smaller.png b/chptr00/rectclass-smaller.png new file mode 100644 index 0000000..a84eaaa Binary files /dev/null and b/chptr00/rectclass-smaller.png differ diff --git a/chptr00/rectclass.png b/chptr00/rectclass.png new file mode 100644 index 0000000..ca3fc1b Binary files /dev/null and b/chptr00/rectclass.png differ diff --git a/chptr00/rectconstr-smaller.png b/chptr00/rectconstr-smaller.png new file mode 100644 index 0000000..c229bb2 Binary files /dev/null and b/chptr00/rectconstr-smaller.png differ diff --git a/chptr00/rectconstr.png b/chptr00/rectconstr.png new file mode 100644 index 0000000..2b75a68 Binary files /dev/null and b/chptr00/rectconstr.png differ diff --git a/chptr00/rects-smaller.png b/chptr00/rects-smaller.png new file mode 100644 index 0000000..6149dd1 Binary files /dev/null and b/chptr00/rects-smaller.png differ diff --git a/chptr00/rects.png b/chptr00/rects.png new file mode 100644 index 0000000..8cf5b4d Binary files /dev/null and b/chptr00/rects.png differ diff --git a/chptr00/umlmsg1-smaller.png b/chptr00/umlmsg1-smaller.png new file mode 100644 index 0000000..74cdeb9 Binary files /dev/null and b/chptr00/umlmsg1-smaller.png differ diff --git a/chptr00/umlmsg1.png b/chptr00/umlmsg1.png new file mode 100644 index 0000000..8f82ec4 Binary files /dev/null and b/chptr00/umlmsg1.png differ diff --git a/chptr00/umlobj1-smaller.png b/chptr00/umlobj1-smaller.png new file mode 100644 index 0000000..fd05c6b Binary files /dev/null and b/chptr00/umlobj1-smaller.png differ diff --git a/chptr00/umlobj1.png b/chptr00/umlobj1.png new file mode 100644 index 0000000..26fc14f Binary files /dev/null and b/chptr00/umlobj1.png differ diff --git a/chptr00/umlobj2-smaller.png b/chptr00/umlobj2-smaller.png new file mode 100644 index 0000000..7f9ce8c Binary files /dev/null and b/chptr00/umlobj2-smaller.png differ diff --git a/chptr00/umlobj2.png b/chptr00/umlobj2.png new file mode 100644 index 0000000..f6e19ac Binary files /dev/null and b/chptr00/umlobj2.png differ diff --git a/chptr01/artwork/riddleuml.graffle b/chptr01/artwork/riddleuml.graffle new file mode 100644 index 0000000..eda02a8 --- /dev/null +++ b/chptr01/artwork/riddleuml.graffle @@ -0,0 +1,370 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-14 15:18:03 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{191, 68.000014160156297}, {171, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 251 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 Riddle} + + TextPlacement + 0 + + + Bounds + {{191, 92.000014160156297}, {171, 36}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 252 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 - question: String\ +- answer: String} + + TextPlacement + 0 + + + Bounds + {{191, 128.0000141601563}, {171, 49}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 253 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 + Riddle(q: String, a: String)\ ++ getQuestion(): String\ ++ getAnswer(): String} + + TextPlacement + 0 + + + GridH + + 251 + 252 + 253 + + + GroupConnect + YES + ID + 250 + Magnets + + {-0.5962847939999445, -1.1925695879998877} + {0, -1.3333333333333335} + {0.59628479399994438, -1.1925695879998872} + {1.1925695879998879, -0.59628479399994405} + {1.3333333333333335, 0} + {1.1925695879998879, 0.59628479399994405} + {0.59628479399994438, 1.1925695879998877} + {0, 1.3333333333333335} + {-0.5962847939999445, 1.1925695879998877} + {-1.1925695879998877, 0.59628479399994372} + {-1.3333333333333333, 0} + {-1.1925695879998877, -0.59628479399994372} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-14 15:20:35 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{478, -16}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, 0}, {575, 731}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff --git a/chptr01/riddleuml-smaller.png b/chptr01/riddleuml-smaller.png new file mode 100644 index 0000000..73cb5ee Binary files /dev/null and b/chptr01/riddleuml-smaller.png differ diff --git a/chptr01/riddleuml.png b/chptr01/riddleuml.png new file mode 100644 index 0000000..b8f9d5a Binary files /dev/null and b/chptr01/riddleuml.png differ diff --git a/chptr02/artwork/emptystr.graffle b/chptr02/artwork/emptystr.graffle new file mode 100644 index 0000000..2013f16 --- /dev/null +++ b/chptr02/artwork/emptystr.graffle @@ -0,0 +1,311 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-15 12:35:29 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{125, 157}, {99, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 157 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 \ul \ulc0 str2:String} + + TextPlacement + 0 + + + Bounds + {{125, 181}, {99, 52}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 158 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs24 \cf0 value = ""\ +count = 0\ +} + + TextPlacement + 0 + + + GridH + + 157 + 158 + + + GroupConnect + YES + ID + 156 + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-15 12:40:37 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{323, 0}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{31.25, 84.75}, {287.5, 365.5}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/chptr02/artwork/graphics.odt b/chptr02/artwork/graphics.odt new file mode 100644 index 0000000..40d1720 Binary files /dev/null and b/chptr02/artwork/graphics.odt differ diff --git a/chptr02/artwork/hello.graffle b/chptr02/artwork/hello.graffle new file mode 100644 index 0000000..5412855 --- /dev/null +++ b/chptr02/artwork/hello.graffle @@ -0,0 +1,311 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-15 12:35:29 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{125, 157}, {99, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 157 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 \ul \ulc0 str:String} + + TextPlacement + 0 + + + Bounds + {{125, 181}, {99, 52}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 158 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs24 \cf0 value = "Hello"\ +count = 5 \ +} + + TextPlacement + 0 + + + GridH + + 157 + 158 + + + GroupConnect + YES + ID + 156 + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-15 12:36:08 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{343, 4}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{30.75, 84.75}, {287.5, 365.5}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/chptr02/artwork/kbreader.graffle b/chptr02/artwork/kbreader.graffle new file mode 100644 index 0000000..28b65b2 --- /dev/null +++ b/chptr02/artwork/kbreader.graffle @@ -0,0 +1,370 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-17 14:38:24 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{215, 165.49799999999999}, {162.25, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 251 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 KeyboardReader} + + TextPlacement + 0 + + + Bounds + {{215, 189.49799999999999}, {162.25, 23}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 252 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 } + + TextPlacement + 0 + + + Bounds + {{215, 212.49799999999999}, {162.25, 62}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 253 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 +KeyboardReader()\ ++getKeyboardInput(): String\ ++getKeyboardInteger(): int\ ++getKeyboardDouble(): double} + + TextPlacement + 0 + + + GridH + + 251 + 252 + 253 + + + GroupConnect + YES + ID + 250 + Magnets + + {-0.5962847939999445, -1.1925695879998877} + {0, -1.3333333333333335} + {0.59628479399994438, -1.1925695879998872} + {1.1925695879998879, -0.59628479399994405} + {1.3333333333333335, 0} + {1.1925695879998879, 0.59628479399994405} + {0.59628479399994438, 1.1925695879998877} + {0, 1.3333333333333335} + {-0.5962847939999445, 1.1925695879998877} + {-1.1925695879998877, 0.59628479399994372} + {-1.3333333333333333, 0} + {-1.1925695879998877, -0.59628479399994372} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-17 14:48:57 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{554, 4}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{142.75, 122.75}, {287.5, 365.5}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/chptr02/artwork/onerow1.odt b/chptr02/artwork/onerow1.odt new file mode 100644 index 0000000..0b26bf5 Binary files /dev/null and b/chptr02/artwork/onerow1.odt differ diff --git a/chptr02/artwork/onerow3.odt b/chptr02/artwork/onerow3.odt new file mode 100644 index 0000000..d22b56d Binary files /dev/null and b/chptr02/artwork/onerow3.odt differ diff --git a/chptr02/artwork/riddle.odt b/chptr02/artwork/riddle.odt new file mode 100644 index 0000000..ef72ab5 Binary files /dev/null and b/chptr02/artwork/riddle.odt differ diff --git a/chptr02/artwork/riddleuser.odt b/chptr02/artwork/riddleuser.odt new file mode 100644 index 0000000..e705f03 Binary files /dev/null and b/chptr02/artwork/riddleuser.odt differ diff --git a/chptr02/artwork/scanner.graffle b/chptr02/artwork/scanner.graffle new file mode 100644 index 0000000..c9feb8d --- /dev/null +++ b/chptr02/artwork/scanner.graffle @@ -0,0 +1,372 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-17 14:38:24 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{215, 165.49799999999999}, {200, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 251 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 Scanner} + + TextPlacement + 0 + + + Bounds + {{215, 189.49799999999999}, {200, 23}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 252 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 } + + TextPlacement + 0 + + + Bounds + {{215, 212.49799999999999}, {200, 88}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 253 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 +Scanner(in InputStream st)\ ++next(): String\ ++nextInt(): int\ ++nextDouble(): double\ ++useDelimiter(in String pat): Scanner\ +} + + TextPlacement + 0 + + + GridH + + 251 + 252 + 253 + + + GroupConnect + YES + ID + 250 + Magnets + + {-0.5962847939999445, -1.1925695879998877} + {0, -1.3333333333333335} + {0.59628479399994438, -1.1925695879998872} + {1.1925695879998879, -0.59628479399994405} + {1.3333333333333335, 0} + {1.1925695879998879, 0.59628479399994405} + {0.59628479399994438, 1.1925695879998877} + {0, 1.3333333333333335} + {-0.5962847939999445, 1.1925695879998877} + {-1.1925695879998877, 0.59628479399994372} + {-1.3333333333333333, 0} + {-1.1925695879998877, -0.59628479399994372} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-17 14:40:08 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{237, 0}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{143.25, 122.75}, {287.5, 365.5}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/chptr02/artwork/stringuml.graffle b/chptr02/artwork/stringuml.graffle new file mode 100644 index 0000000..b99df7a --- /dev/null +++ b/chptr02/artwork/stringuml.graffle @@ -0,0 +1,372 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99997234344482, 733}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2017-07-14 15:18:03 +0000 + Creator + David Cooper + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + TableGroup + Graphics + + + Bounds + {{191, 68.000014160156297}, {171, 24}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 251 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0 + +\f0\b\fs24 \cf0 String} + + TextPlacement + 0 + + + Bounds + {{191, 92.000014160156297}, {171, 36}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 252 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 - value\ +- count} + + TextPlacement + 0 + + + Bounds + {{191, 128.0000141601563}, {171, 75}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 253 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.29411799999999999, -0.264706} + + shadow + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 + +\f0\fs22 \cf0 + String()\ ++ String(in s: String)\ ++ length(): int\ ++ concat(in s: String): String\ ++ equals(in s: String): boolean} + + TextPlacement + 0 + + + GridH + + 251 + 252 + 253 + + + GroupConnect + YES + ID + 250 + Magnets + + {-0.5962847939999445, -1.1925695879998877} + {0, -1.3333333333333335} + {0.59628479399994438, -1.1925695879998872} + {1.1925695879998879, -0.59628479399994405} + {1.3333333333333335, 0} + {1.1925695879998879, 0.59628479399994405} + {0.59628479399994438, 1.1925695879998877} + {0, 1.3333333333333335} + {-0.5962847939999445, 1.1925695879998877} + {-1.1925695879998877, 0.59628479399994372} + {-1.3333333333333333, 0} + {-1.1925695879998877, -0.59628479399994372} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-07-15 12:31:42 +0000 + Modifier + David Cooper + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99997234344482, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{78, 4}, {710, 873}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{131, 0}, {287.5, 365.5}} + Zoom + 2 + ZoomValues + + + Canvas 1 + 2 + 1 + + + + + diff --git a/chptr02/artwork/ui.odt b/chptr02/artwork/ui.odt new file mode 100644 index 0000000..b66be65 Binary files /dev/null and b/chptr02/artwork/ui.odt differ diff --git a/chptr02/drawrect.png b/chptr02/drawrect.png new file mode 100644 index 0000000..0c817dd Binary files /dev/null and b/chptr02/drawrect.png differ diff --git a/chptr02/drawstr.png b/chptr02/drawstr.png new file mode 100644 index 0000000..f69bc0e Binary files /dev/null and b/chptr02/drawstr.png differ diff --git a/chptr02/emptystr-smaller.png b/chptr02/emptystr-smaller.png new file mode 100644 index 0000000..5ad2c9b Binary files /dev/null and b/chptr02/emptystr-smaller.png differ diff --git a/chptr02/emptystr.png b/chptr02/emptystr.png new file mode 100644 index 0000000..f8bb3ff Binary files /dev/null and b/chptr02/emptystr.png differ diff --git a/chptr02/graphics-smaller.png b/chptr02/graphics-smaller.png new file mode 100644 index 0000000..3e5b96a Binary files /dev/null and b/chptr02/graphics-smaller.png differ diff --git a/chptr02/graphics.png b/chptr02/graphics.png new file mode 100644 index 0000000..00caea3 Binary files /dev/null and b/chptr02/graphics.png differ diff --git a/chptr02/hello-smaller.png b/chptr02/hello-smaller.png new file mode 100644 index 0000000..c6ba1bf Binary files /dev/null and b/chptr02/hello-smaller.png differ diff --git a/chptr02/hello.png b/chptr02/hello.png new file mode 100644 index 0000000..a0f37b5 Binary files /dev/null and b/chptr02/hello.png differ diff --git a/chptr02/kbreaderuml-smaller.png b/chptr02/kbreaderuml-smaller.png new file mode 100644 index 0000000..efb511c Binary files /dev/null and b/chptr02/kbreaderuml-smaller.png differ diff --git a/chptr02/kbreaderuml.png b/chptr02/kbreaderuml.png new file mode 100644 index 0000000..05b89dc Binary files /dev/null and b/chptr02/kbreaderuml.png differ diff --git a/chptr02/onerow1-smaller.png b/chptr02/onerow1-smaller.png new file mode 100644 index 0000000..9d98150 Binary files /dev/null and b/chptr02/onerow1-smaller.png differ diff --git a/chptr02/onerow1.png b/chptr02/onerow1.png new file mode 100644 index 0000000..f889b36 Binary files /dev/null and b/chptr02/onerow1.png differ diff --git a/chptr02/onerow3-smaller.png b/chptr02/onerow3-smaller.png new file mode 100644 index 0000000..4155085 Binary files /dev/null and b/chptr02/onerow3-smaller.png differ diff --git a/chptr02/onerow3.png b/chptr02/onerow3.png new file mode 100644 index 0000000..8f20984 Binary files /dev/null and b/chptr02/onerow3.png differ diff --git a/chptr02/riddleuml-smaller.png b/chptr02/riddleuml-smaller.png new file mode 100644 index 0000000..73cb5ee Binary files /dev/null and b/chptr02/riddleuml-smaller.png differ diff --git a/chptr02/riddleuser-smaller.png b/chptr02/riddleuser-smaller.png new file mode 100644 index 0000000..11e7d1f Binary files /dev/null and b/chptr02/riddleuser-smaller.png differ diff --git a/chptr02/riddleuser.png b/chptr02/riddleuser.png new file mode 100644 index 0000000..7b36bca Binary files /dev/null and b/chptr02/riddleuser.png differ diff --git a/chptr02/scanneruml-smaller.png b/chptr02/scanneruml-smaller.png new file mode 100644 index 0000000..80bd490 Binary files /dev/null and b/chptr02/scanneruml-smaller.png differ diff --git a/chptr02/scanneruml.png b/chptr02/scanneruml.png new file mode 100644 index 0000000..8113423 Binary files /dev/null and b/chptr02/scanneruml.png differ diff --git a/chptr02/stringuml-smaller.png b/chptr02/stringuml-smaller.png new file mode 100644 index 0000000..c34e67f Binary files /dev/null and b/chptr02/stringuml-smaller.png differ diff --git a/chptr02/stringuml.png b/chptr02/stringuml.png new file mode 100644 index 0000000..7cb3fca Binary files /dev/null and b/chptr02/stringuml.png differ diff --git a/chptr02/ui-smaller.png b/chptr02/ui-smaller.png new file mode 100644 index 0000000..39a67ba Binary files /dev/null and b/chptr02/ui-smaller.png differ diff --git a/chptr02/ui.png b/chptr02/ui.png new file mode 100644 index 0000000..b7cce1e Binary files /dev/null and b/chptr02/ui.png differ diff --git a/java-sourcecode/ch2/hellograph/HelloWorldGraphic.class b/java-sourcecode/ch2/hellograph/HelloWorldGraphic.class new file mode 100644 index 0000000..7fe518c Binary files /dev/null and b/java-sourcecode/ch2/hellograph/HelloWorldGraphic.class differ diff --git a/java-sourcecode/ch2/hellograph/HelloWorldGraphic.java b/java-sourcecode/ch2/hellograph/HelloWorldGraphic.java index 18cee0d..1140e7a 100644 --- a/java-sourcecode/ch2/hellograph/HelloWorldGraphic.java +++ b/java-sourcecode/ch2/hellograph/HelloWorldGraphic.java @@ -4,9 +4,9 @@ * Description: Draws a message inside a rectangle. */ import java.awt.*; -import java.applet.*; +import javax.swing.JFrame; -public class HelloWorldGraphic extends Applet +public class HelloWorldGraphic extends Canvas { public void paint(Graphics g) { g.setColor(Color.cyan); // Set color g.fillRect(25, 25, 140, 40); // Fill rectangle @@ -21,4 +21,13 @@ public class HelloWorldGraphic extends Applet g.setColor(Color.black); g.drawString("Welcome to Java", 50, 100); } // paint() + + // the program + public static void main(String[] args){ + HelloWorldGraphic c = new HelloWorldGraphic(); + JFrame f = new JFrame(); + f.add(c); + f.setSize(200,200); + f.setVisible(true); + } } // HelloWorldGraphic diff --git a/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.class b/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.class new file mode 100644 index 0000000..571c7dc Binary files /dev/null and b/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.class differ diff --git a/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.java b/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.java new file mode 100644 index 0000000..74fce37 --- /dev/null +++ b/java-sourcecode/ch2/helloworldcanvas/HelloWorldCanvas.java @@ -0,0 +1,24 @@ +/** File: HelloWorldSwing program */ + +import javax.swing.JFrame; // Import class names +import java.awt.Graphics; +import java.awt.Canvas; + +public class HelloWorldCanvas extends Canvas // Class header +{ + // Start of body + public void paint(Graphics g) + // The paint method + { + g.drawString("Hello, World!", 10, 10); + g.drawString("Welcome to Java",10,35); + } // End of paint + + public static void main(String[] args){ + HelloWorldCanvas c = new HelloWorldCanvas(); + JFrame f = new JFrame(); + f.add(c); + f.setSize(150,90); + f.setVisible(true); + } +} // End of HelloWorldCanvas diff --git a/jjj-os.pdf b/jjj-os.pdf index e510353..5668f61 100644 Binary files a/jjj-os.pdf and b/jjj-os.pdf differ diff --git a/texfiles/0.intro.tex b/texfiles/0.intro.tex index e80f8af..cc07210 100644 --- a/texfiles/0.intro.tex +++ b/texfiles/0.intro.tex @@ -638,7 +638,7 @@ \subsection{Basic \mbox{Object-Oriented} Programming Metaphor: A Java program, and any object-oriented program, is a collection of interacting objects that models a collection of real-world -\marginfig{chptr00/kitchen.eps} {A model of a kitchen.}{fig-kitchen} +\marginfig{chptr00/kitchen-small.png} {A model of a kitchen.}{fig-kitchen} objects. Think of the model that a kitchen designer might use to layout your new kitchen (Fig.~\ref{fig-kitchen}). It will contain @@ -686,7 +686,7 @@ \subsection{What is an Object?} object, named {\tt pawn1}. An object's label is always underlined. \begin{figure}[tb] -\figaleft{chptr00/umlobj1.eps} {In UML, objects are represented by +\figaleft{chptr00/umlobj1-smaller.png} {In UML, objects are represented by rectangles that are labeled with a two-part label of the form {\it id:Type}. The object's label is always underlined. } {fig-umlobj1} @@ -711,7 +711,7 @@ \subsection{Attributes and Values} cash}, while the {\tt drivethru:ATM} has only \$150.0 in {\tt cash}. \begin{figure}[h] -\figaleft{chptr00/umlobj2.eps} +\figaleft{chptr00/umlobj2-smaller.png} {A second partition of an object diagram is used to display the object's attributes and their values. } {fig-umlobj2} @@ -738,7 +738,7 @@ \subsection{Actions and Messages} parentheses to distinguish actions from objects and attributes.) \begin{figure}[tb] -\figaright{chptr00/umlmsg1.eps} {Messages in UML are represented by labeled +\figaright{chptr00/umlmsg1-smaller.png} {Messages in UML are represented by labeled arrows. In this example, we are telling a pawn to move from its current position to row 3 column 4. } {fig-umlmsg1} @@ -819,7 +819,7 @@ \subsection{What is a Class?} program. \begin{figure}[tb] -\figaleft{chptr00/rectclass.eps} +\figaleft{chptr00/rectclass-smaller.png} {A UML diagram of the {\tt Rectangle} class. } {fig-umlrect} @@ -899,7 +899,7 @@ \subsection{Instance versus Class Variables and Methods} into the cookie dough: the result is an individual cookie (object). \begin{figure}[tb] -\figaleft{chptr00/rects.eps} {The {\tt Rectangle} class and two of its +\figaleft{chptr00/rects-smaller.png} {The {\tt Rectangle} class and two of its instances. Note that the class variable, {\tt nRectangles}, is underlined to distinguish it from {\tt length} and {\tt width}, the instance variables. @@ -929,7 +929,7 @@ \subsection{Instance versus Class Variables and Methods} as a way of keeping count of how many objects it has created. \begin{figure}[h] -\figaleftscaled{chptr00/rectconstr.eps}{0.8} +\figaleftscaled{chptr00/rectconstr-smaller.png}{0.8} {Constructing a {\tt Rectangle} instance. } {fig-rectconstr} @@ -960,7 +960,7 @@ \subsection{Class Hierarchy and Inheritance} its width. \begin{figure}[tb] -\figa{chptr00/classhier.eps} +\figaright{chptr00/classhier-smaller.png} {A hierarchy of Java classes.} {fig-classhier} diff --git a/texfiles/1.programs.tex b/texfiles/1.programs.tex index 599b7e5..8e97100 100644 --- a/texfiles/1.programs.tex +++ b/texfiles/1.programs.tex @@ -328,7 +328,7 @@ \subsection{Object Design} \pagebreak Taken together, these various design decisions lead to the -\marginfig{chptr01/riddleuml.eps}% +\marginfig{chptr01/riddleuml-smaller.png}% {A UML class diagram representing the {\tt Riddle} class.} {fig:ruml} specification shown in Figure~\ref{fig:ruml}. As our discussion has illustrated, diff --git a/texfiles/2.objects.tex b/texfiles/2.objects.tex index a914fd3..9995875 100644 --- a/texfiles/2.objects.tex +++ b/texfiles/2.objects.tex @@ -81,7 +81,7 @@ \subsection{Creating and Combining Strings} Strings are very useful objects in Java and in all computer programs. %%\marginfig{chptr02/strclass.eps}{The {\tt String} class. -\marginfig{chptr02/stringuml.eps}{A partial representation of the +\marginfig{chptr02/stringuml-smaller.png}{A partial representation of the {\tt String} class.} {fig-strclass} They are used for inputting and outputting all types of @@ -141,7 +141,7 @@ \subsection{Creating and Combining Strings} \end{jjjlisting} \noindent We then create a {\tt String} object by using -\marginfig{chptr02/hello.eps}{A {\tt String} +\marginfig{chptr02/hello-smaller.png}{A {\tt String} object stores a sequence of characters and a {\tt count} giving the number of characters.} {fig-str1} @@ -177,7 +177,7 @@ \subsection{Creating and Combining Strings} has the literal value "" -- that is, a pair of double quotes that contain no characters. Because the empty string has no characters, the {\tt count} variable stores a zero (Fig.~2.3). -\marginfig{chptr02/emptystr.eps}{The empty string has a value of "" and a +\marginfig{chptr02/emptystr-smaller.png}{The empty string has a value of "" and a %% its length is 0 (Fig.~\ref{fig-emptystr}). its length is 0.} {fig-emptystr} @@ -393,7 +393,7 @@ \section{Drawing Shapes with a {\tt Graphics} Object (Optional)} HelloWorldCanvas c = new HelloWorldCanvas(); JFrame f = new JFrame(); f.add(c); - f.setSize(150,50); + f.setSize(150,90); f.setVisible(true); } } // End of HelloWorldCanvas @@ -466,7 +466,7 @@ \section{Drawing Shapes with a {\tt Graphics} Object (Optional)} Figure~\ref{fig-drawstr}. \begin{figure}[h] -\figascaled{chptr02/drawstr.eps}{0.75}{``Hello, World!'' is drawn +\figascaled{chptr02/drawstr.png}{0.75}{``Hello, World!'' is drawn %%\figaleft{chptr02/drawstr.eps}{``Hello, World!'' is drawn at coordinate (10, 10) and ``Welcome to Java'' at (10, 35) on the JFrame.} @@ -488,7 +488,7 @@ \subsection{Graphics Drawing Methods} {\tt Graphics} object, {\tt g}, each of these is called in the same way as the {\tt drawString()} method from the previous example. Each of these methods takes four {\tt int} arguments, which specify -\marginfig{chptr02/graphics.eps}{Some of the drawing methods in +\marginfig{chptr02/graphics-smaller.png}{Some of the drawing methods in the {\tt Graphics} class.} {fig-graphics} the rectangle's location and size. Thus, a call to {\tt fillRect()} @@ -614,10 +614,10 @@ \subsection{Graphics Drawing Methods} // the program public static void main(String[] args){ - HelloWorldCanvas c = new HelloWorldCanvas(); + HelloWorldGraphic c = new HelloWorldGraphic(); JFrame f = new JFrame(); f.add(c); - f.setSize(150,50); + f.setSize(200,200); f.setVisible(true); } } //HelloWorldGraphic @@ -639,7 +639,7 @@ \subsection{Graphics Drawing Methods} or skipped. \begin{figure}[!bht] -\figaleftscaled{chptr02/drawrect.eps}{0.8}{This is how the {\tt HelloWorldGraphic} +\figaleftscaled{chptr02/drawrect.png}{0.8}{This is how the {\tt HelloWorldGraphic} %%\figa{chptr02/drawrect.eps}{This is how the {\tt HelloWorldGraphic} program will look when run. } {fig-drawrect} @@ -674,13 +674,15 @@ \section{Class Definition} \end{NL} \end{minipage} -\marginfig{chptr02/riddle.eps}{The {\tt Riddle} class.} -{fig-riddle} \subsection{The {\tt Riddle} Class} + \noindent Recall our definition of the {\tt Riddle} class from Chapter~1, which is summarized in the UML diagram in Figure~2.11. A -{\tt Riddle} has two attributes, {\tt question} and {\tt answer}. Each +{\tt Riddle} has two attributes, {\tt question} and {\tt answer}. +\marginfig{chptr02/riddleuml-smaller.png}{The {\tt Riddle} class.} +{fig-riddle} +Each of these variables stores a string of characters, which Java treats as data of type {\tt String}. The {\tt Riddle} class contains three methods. The {\tt Riddle()} constructor method assigns initial values @@ -689,6 +691,9 @@ \subsection{The {\tt Riddle} Class} return the data stored in {\tt question} ands {\tt answer} respectively. + + + The instance variables {\tt question} and {\tt answer} are designated as {\tt private} ($-$), but the {\tt Riddle()}, {\tt getQuestion()} and {\tt getAnswer()} methods are designated as {\tt public} @@ -768,21 +773,21 @@ \subsection{The {\tt RiddleUser} Class} like {\tt RiddleUser}. One advantage of using a second class is that it gets us in the -\marginnote{User interface} -habit of thinking about the need for a separate class to serve as a +\marginnote{User interface} habit of thinking about the need for a separate class to serve as a user interface, with a separate set of tasks from the {\tt Riddle} class. A {\bf user interface} is an object or class that handles the interaction between a program's user and the rest of the program's -computational tasks. This concept is illustrated in Figure~2.13. Note +computational tasks. +\marginfig{chptr02/ui-smaller.png}{The user interfaces handles interaction +between the user and the rest of the program.} +{fig-userint} + This concept is illustrated in Figure~2.13. Note that we use the general term {\it computational object} to distinguish the rest of the program's computations from the user interface. Obviously, the exact nature of the computation will vary from program to program, just as will the details of the user interface. The computation done by our {\tt Riddle} class is just the storing and displaying of a riddle's question and answer. -\marginfig{chptr02/ui.eps}{The user interfaces handles interaction -between the user and the rest of the program.} -{fig-userint} By separating user interface tasks from riddle tasks this design @@ -794,7 +799,7 @@ \subsection{The {\tt RiddleUser} Class} interaction between two types of objects: a {\tt RiddleUser} and one %\begin{figure} \begin{figure}[h!] -\figaleft{chptr02/riddleuser.eps}{This UML class diagram represents an {\em association} +\figaleft{chptr02/riddleuser-smaller.png}{This UML class diagram represents an {\em association} %%\figa{chptr02/riddleuser.eps}{This UML class diagram represents an {\em association} between the {\tt RiddleUser} and {\tt Riddle} classes. The {\tt Riddle\-User} class will {\em use} one or more objects of the {\tt @@ -1073,7 +1078,7 @@ \subsubsection*{Method Decomposition} %%%Figure~2.14 is a UML class diagram that summarizes this Figure~2.16 is a UML class diagram that summarizes this -\marginfig{chptr02/onerow3.eps}{A UML class diagram for {\tt OneRowNim}.} +\marginfig{chptr02/onerow3-smaller.png}{A UML class diagram for {\tt OneRowNim}.} {fig-ornuml} design of the {\tt OneRowNim} class. Note that the methods are declared public ($+$) and will thereby form the interface for a {\tt @@ -1099,7 +1104,7 @@ \subsubsection*{The Class Header} been described as having any relationship to any other Java class, its header can omit the {\tt extends} clause so it will be a direct subclass of {\tt Object} (Figure~2.17). -\marginfig{chptr02/onerow1.eps}{By default, {\tt OneRowNim} is a +\marginfig{chptr02/onerow1-smaller.png}{By default, {\tt OneRowNim} is a subclass of {\tt Object}.} {fig-pedigree} Thus, the class header for {\tt OneRowNim} will look like: @@ -1915,7 +1920,7 @@ \section{From the Java Library: {\tt java.util.Scanner}.} special class, {\tt BufferedReader}, that uses an input stream and has a method that collects characters until it reads the character or characters that correspond to hitting the return or enter key. A second -\marginfig{chptr02/scanneruml.eps} +\marginfig{chptr02/scanneruml-smaller.png} {The {\tt Scanner} class, with a partial list of its public methods.} {fig-scanneruml} @@ -2095,7 +2100,7 @@ \subsection{Keyboard Input with the {\tt Scanner} Class} \subsection{Keyboard Input with the {\tt KeyboardReader} Class} -\marginfig{chptr02/kbreaderuml.eps} +\marginfig{chptr02/kbreaderuml-smaller.png} {A UML class diagram of the {\tt KeyboardReader} class.} {fig-kbreaderuml} If you are using an older version of Java that does not have the {\tt diff --git a/texfiles/3E.sty b/texfiles/3E.sty index 8cd2924..9268a0b 100644 --- a/texfiles/3E.sty +++ b/texfiles/3E.sty @@ -219,9 +219,9 @@ SECTION\ #1\hspace*{5pt}$\bullet$\hspace*{5pt}}}% \def\marginfigvspace#1#2#3{\protect\marginpar{\vspace*{#1}\addtocounter{figure}{1}\protect\begin{center}% %% \psfig{file=e2kl-D1:PH-e2kl:Morelli:0333700MOREL:#2}\end{center}% \psfig{file=../#2}\end{center}% - \par\vspace{0pt}\protect\raggedright{\color{cyan}\rule[12pt]{12.5pc}{0.5pt}\hspace*{-12.5pc}% + \par\vspace{0pt}\protect\raggedright{\color{cyan}\rule[1pt]{12.5pc}{0.5pt}\hspace*{-12.5pc}% \bf\small FIGURE \thefigure}% - \quad\color{black}\raggedright\small#3}}% + \quad\color{black}\vspace*{-22.5pt}\raggedright\small#3}}% % %caption 27 after left \def\figbprogbleft#1#2{\end{minipage}\par{\color{cyanten}\rule[-2pt]{40.5pc}{3pt}}\par\vspace*{-11pt}% @@ -287,9 +287,10 @@ SECTION\ #1\hspace*{5pt}$\bullet$\hspace*{5pt}}}% \def\marginfig#1#2#3{\protect\marginpar{\protect\begin{center}% \psfig{file=../#1} \end{center}% - \par\vspace{0pt}\protect\raggedright{ + \par\vspace{-10pt}\protect\raggedright{ \color{cyan} -\rule[12pt]{12.5pc}{0.5pt}\hspace*{-12.5pc}% +\rule[1pt]{12.5pc}{0.5pt}\hspace*{-12.5pc}% +\vspace{-10pt} \captionof{figure} {#2 \label{#3}}}}} % \bf\small FIGURE \thefigure}%