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}%