MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_01C71D00.425B6580" This document is a Single File Web Page, also known as a Web Archive file. If you are seeing this message, your browser or editor doesn't support Web Archive files. Please download a browser that supports Web Archive, such as Microsoft Internet Explorer. ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16 =3D 0), isMac =3D (app= Ver.indexOf("Macintosh") >=3D 0) if( msie >=3D 0 ) ver =3D parseFloat( appVer.substring( msie+5, appVer.indexOf ( ";", msie = ) ) ) else ver =3D parseInt( appVer ) browserSupported=3D0 if( !isMac && ver >=3D 4 && msie >=3D 0 ) { browserSupported=3D1 window.location.replace( 'cse303-06au-lecture16_files/frame.htm'+document= .location.hash ) } =09 //-->

This presentation contains content that your browser may not be able to = show properly. This presentation was optimized for more recent versions of Micro= soft Internet Explorer.

If you would like to proceed anyway, click here.

------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master03.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹date/time›
‹footer›
‹#›
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master03.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/preview.wmf Content-Transfer-Encoding: base64 Content-Type: image/x-wmf AQAJAAAD1QMAAAYAKgAAAAAABAAAAAMBCAAFAAAACwIAAAAABQAAAAwCeQChAAMAAAAeAAcAAAD8 AgAA////AAAABAAAAC0BAAAIAAAA+gIFAAAAAAD///8ABAAAAC0BAQAOAAAAJAMFAP///////3gA oAB4AKAA////////CAAAAPoCAAAAAAAAAAAAAAQAAAAtAQIABwAAAPwCAAD///8AAAAEAAAALQED AAQAAAAnAf//BAAAAPABAAADAAAAHgAHAAAA/AIAAJkAAAAAAAQAAAAtAQAABAAAAC0BAQAOAAAA JAMFAAwAHAAMAD8AlAA/AJQAHAAMABwABAAAAC0BAgAEAAAALQEDAAQAAAAnAf//HAAAAPsC9/8A AAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALQEEAAQA AAAuARgABAAAAAIBAQAFAAAACQL///8CEgAAADIKJgA+AAcAAABDU0UgMzAzAAcABgAGAAMABQAF AAUABAAAAC4BAAAcAAAA+wIQAAcAAAAAALwCAAAAAAECAiJTeXN0ZW0AAAAAAAAAAAAAGAAAAAIA AACgOQsL5AQAAAQAAAAtAQUABAAAAPABBAAcAAAA+wL3/wAAAAAAAJABAAAAAABAACJBcmlhbAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAtAQQABAAAAC4BGAAEAAAAAgEBAAUAAAAJAv// /wIqAAAAMgoxACIAFwAAAENvbmNlcHRzIGFuZCBUb29scyBmb3IgAAcABQAFAAUABQAEAAMABAAD AAUABQAEAAMABQAFAAUAAgAFAAIAAwAFAAIAAwAEAAAALgEAAAQAAAAtAQUABAAAAPABBAAcAAAA +wL3/wAAAAAAAJABAAAAAABAACJBcmlhbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAt AQQABAAAAC4BGAAEAAAAAgEBAAUAAAAJAv///wIlAAAAMgo8ACMAFAAAAFNvZnR3YXJlIERldmVs b3BtZW50BgAEAAQAAwAGAAUAAwAFAAIABwAEAAUABQACAAUABQAIAAQABQADAAQAAAAuAQAABAAA AC0BBQAEAAAA8AEEABwAAAD7Avn/AAAAAAAAkAEAAAAAAEAAIkFyaWFsAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAABAAAAC0BBAAEAAAALgEYAAQAAAACAQEABQAAAAkCmQAAAh8AAAAyCksANQAQ AAAAUmljaGFyZCBDLiBEYXZpcwUAAgAEAAQABAACAAQAAgAFAAIAAgAFAAQAAwACAAQABAAAAC4B AAAEAAAALQEFAAQAAADwAQQAHAAAAPsC+f8AAAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAEAAAALQEEAAQAAAAuARgABAAAAAIBAQAFAAAACQKZAAACEgAAADIK VAAuAAcAAABVVyBDU0UgAAUABwACAAUABQAFAAIABAAAAC4BAAAEAAAALQEFAAQAAADwAQQAHAAA APsC+f8AAAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA LQEEAAQAAAAuARgABAAAAAIBAQAFAAAACQKZAAACCQAAADIKVABNAAEAAACWAAQABAAAAC4BAAAE AAAALQEFAAQAAADwAQQAHAAAAPsC+f8AAAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAEAAAALQEEAAQAAAAuARgABAAAAAIBAQAFAAAACQKZAAACFQAAADIKVABT AAkAAAAxMS84LzIwMDYABAAEAAIABAACAAQABAAEAAQABAAAAC4BAAAEAAAALQEFAAQAAADwAQQA HAAAAPsC+f8AAAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE AAAALQEEAAQAAAAuARgABAAAAAIBAQAFAAAACQKZAAACGAAAADIKXgA8AAsAAABMZWN0dXJlIDE2 IAAEAAQABAACAAQAAgAEAAIABAAEAAIABAAAAC4BAAAEAAAALQEFAAQAAADwAQQAHAAAAPsC+f8A AAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALQEEAAQA AAAuARgABAAAAAIBAQAFAAAACQKZAAACCQAAADIKXgBgAAEAAACWAAQABAAAAC4BAAAEAAAALQEF AAQAAADwAQQAHAAAAPsC+f8AAAAAAACQAQAAAAAAQAAiQXJpYWwAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAEAAAALQEEAAQAAAAuARgABAAAAAIBAQAFAAAACQKZAAACIQAAADIKZwAzABEAAABD KysgQ2xhc3MgRGV0YWlsc2UFAAQABAACAAUAAgAEAAQABAACAAUABAACAAQAAQACAAQABAAAAC4B AAAEAAAALQEFAAQAAADwAQQAAwAAAAAA ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master04.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
Click to edit Master title style
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹date/time›
‹footer›
‹#›
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master04.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master02.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
<= /div>
<= /div>
<= /div>
‹h= eader›
<= /div>
<= /div>
<= /div>
‹date/time›
<= /div>
<= /div>
<= /div>
‹f= ooter›
<= /div>
<= /div>
<= /div>
‹#›
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/pres.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0001.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
CSE 303
Concepts and Tools for
Software Developme= nt
Richard C. Davis
UW CSE – 11/8/2006 Lecture 16 –
C++ Class Details
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0001_image001.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhyAF2AHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADG AXUAgAAAAJkAAAL/jI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8woMCBBAsaPIgwocKFDBs6fAgxosSJFCtavIgxo8aNNhw7evwIMqTIkSRLmjyJMqXK lSxbunwJM6bMmTRr2ryJM6fOnTx7+vwJNKjQoUSLGj2KNOmkAgA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0026.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
2
Administravia
M= idterm not ready
I= t is my highest priority in life from this moment on.
A= dding 1 Late day
T= otal is now 4
If you feel cheated on HW4, talk to me and we'll <= /span>arrange something
M= ust do HW6 and HW7 in groups of two
C= hoose a partner now!  <= /span>
S= end choice to Lincoln Ritter
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0026_image002.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0013.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
3
Today
&#= 8226;More on object allocation
&= #8211;Stack vs. Heap-based objects
&= #8211;Object data members: objects or pointers?
&#= 8226;Thorny details
&= #8211;Automatically created methods
&= #8211;Constructor details
&= #8211;const
&#= 8226;Utility classes (vectors, strings, iostreams)
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0013_image003.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0014.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
4
Stack-based Objects
class IntCell { <= /b>
int i;
int j;
}
IntCell ic;
Stack
&ic
int i
int j
Heap
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0014_image004.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0014_image005.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhdgBtAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAAB0 AGwAgQAAAAAAAMz/zAECAwL/hI+pGe0Po5y02nuX3iaID4biSJbmiaZnwLWMCsfyrLLu7dH6zpv2 3cr1hsTZD7gRFpdM0hG5UDanzCf0Rc0urdeDVAumcbuAb/hcI0fR7Ni4a27LQ+9rfD6vQ+/4th7J 14f2BxQoGEaIc3iY6GK4mNUYBNknyfFI2WSZlJmnpoDZWbSpESo6ZNmwdjpo54DFiuj64BV7hoFR ZouI2+v7Cxz8O0uru6uVWtxxjDwLyhxpVwpNRbpKXfUJiz2qjWDKjWL9HN7tvVxONL6dvrP+3Y56 jh7vPm9cr/Nem69/D97vwz56Ad38K2jkIEKD8wAGHIhvYQqIDvtRlAjjIsaJmAo3rujosQRFYSRL mnzVMOTHlCpFgmxJ5yVMgTJnapwZkyVOEDd3Cui5EyhOoTZrwiR61GhLpEuVqmT61GlIqFOleqR6 1epGrFu1YuT69d/JsWRxeZUIFu3ZhWnZrkXYFu7bgnHpzn1412LefHXx6vTZV+/foHvrBeZbON5h w4nbLVbcON1jx5HLTZZcOdxly/fKlP0M+kEBADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0017.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
5
Why Stack-based Objects?
•<= /span>C++ makes "primitive semantics" possible=
–<= /span>Manipulate objects as if they were primitive types=
–<= /span>Avoids manual allocation/de-allocation
•<= /span>Big source of errors
•<= /span>But lot= s of hidden copying!
–<= /span>Operator Overloading for classes
IntCell ic3 =3D ic1 + ic2;
•<= /span>Helps to make primitive semantics possible
•<= /span>HW5 focuses on stack-based objects
–<= /span>You're not familiar with it
–<= /span>You can easily trip over it
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0017_image006.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0018.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
6
Heap-based Objects
class IntCell { <= /b>
int i;
int j;
}
IntCell *pic =3D new IntCell();
Stack
&pic
Heap
int i
int j
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0018_image007.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0018_image008.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh7wBgAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAADs AF4AgQAAAAAAAMz/zAECAwL/hI+pGe0Po5y02nuX3rz7D4biCAbCiabqyrbuC8dvQNb2jee5Kff+ D4zRdMSi8RjiBZfMZmuIjEqnOKXziv1Bqdyul5ENi2ffsnlqHavF27P7XUuv5842/I7fyOl8oD0P CLjXRygUeHg4WLjI8of4WKbIOHniCHlJJUnJaInpeaS5Wdj5WbojiopCaspKEppKt9o6+/EKuyZL q6thezuWuxt80OsbBiwcTFyMdYysq7xc5zytF81JjQ1mPZqd/Ae9HdTcLeigHc43To4XMYzep75e hJEB/t4TL69Dz9/v/w/Qn75WEgzYu2dooCkICA4iJKOwlLlzD9lElMiropp8/xfvONS4gmPHNx9B phA58kxJk5VS0lrJEqXLLzBNypzZpSbImzgzsczCs6cUnRqDDguINKnSBvN+MotCtOLNqA+NAqCK cKrTK1ax3tO6tUnXsGKbkl0y9qw4s2q1QG3rhy1cGWnn0pVrFyKovHeJeH1Xl68LsIIHvy1s2C/i xHsXN8LruCWSv+gIR1Z1+DJmv0s7e6aXWbMAy5oDl4Yc2fRl0qtDn1YsWnLj2KxTu24Nm/Zt27lF q+a9L7ZsI5TD1Xb8Gzlq5ZOFj16+OHl06IilV6deuOvn7dwZ9n492zd2wdazj+dbnvz5vOnRr7fb nv37ufHhz4dbn/79tvnx72dX2x9//50VIIADklUggQeGlSCCC27VIIPzdEfhdrsxJ5QnxW1jVYYP OtWhh8EJF6KIVThXook2bGhNiiq6guKLj7AYjYsyJhHjjYHQuIyNOnrAYzE+/shBkL4MSWRGJCbJ ToVOLlUAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0018_image009.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhTwAPAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAwBM AAkAgAAAAAAAAAIrhI+py+0fwpu02hbj3bybnHniuIDgZ6bqyrbuq5Jyt872lt66de7+pFkUAAA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0020.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
7
Why Heap-based Objects?
&#= 8226;It's similar to Java
&#= 8226;But you have to manually free all memory
R= 11;IntCell *pic =3D new IntCell();
R= 11;delete pic;
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0020_image010.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0019.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
8
Stack vs. Heap based Objects
•<= /span>Which is better?&= nbsp; You judge
–<= /span>Heap-based: Java-like semantics, manual memory mgm= t
–<= /span>Stack-based: Primitive semantics, hidden copies
Stack
int i
int j
Heap
Stack-based
Stack
Heap
int i
int j
Heap-based
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0019_image011.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0019_image012.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhdgBtAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAAB0 AGwAgQAAAAAAAMz/zAECAwL/hI+pGe0Po5y02nuX3iaID4biSJbmiaZnwLWMCsfyrLLu7dH6zpv2 3cr1hsTZD7gRFpdM0hG5UDanzCf0Rc0urdeDVAumcbuAb/hcI0fR7Ni4a27LQ+9rfD6vQ+/4th7J 14f2BxQoGEaIc3iY6GK4mNUYBNknyfFI2WSZlJmnpoDZWbSpESo6ZNmwdjpo54DFiuj64BV7hoFR ZouI2+v7Cxz8O0uru6uVWtxxjDwLyhxpVwpNRbpKXfUJiz2qjWDKjWL9HN7tvVxONL6dvrP+3Y56 jh7vPm9cr/Nem69/D97vwz56Ad38K2jkIEKD8wAGHIhvYQqIDvtRlAjjIsaJmAo3rujosQRFYSRL mnzVMOTHlCpFgmxJ5yVMgTJnapwZkyVOEDd3Cui5EyhOoTZrwiR61GhLpEuVqmT61GlIqFOleqR6 1epGrFu1YuT69d/JsWRxeZUIFu3ZhWnZrkXYFu7bgnHpzn1412LefHXx6vTZV+/foHvrBeZbON5h w4nbLVbcON1jx5HLTZZcOdxly/fKlP0M+kEBADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0019_image013.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4QBgAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAADf AF4AgQAAAAAAAMz/zAECAwL/hI+pGe0Po5y02nuX3rz7D4biCATCiabqyrbuC8dvQNb2jeecKff+ D4zRdMSi8WjgBZfMZmuIjEqnG6Xziv1Bqdzu0ZoNi1dbr/lMAo/X4TL6Ddeo2fSmO46Pz+t8bf6f t9c3CHMHeEglSLhIhujopcgoKWD4aKkTOblYedlZk6k5yOlJCgIayjdaulqF6krJGity+rqmKotL Wyt2ixuru5vV67sKHHw1TExqfGyn/IzA3LyUDA1XKT0NVG2N5rCQre3D3W0GwSAuWu4pcRCeLrRu jmFRAp8qD0m/z9/v/88vn6UJSe7VISdQSoRoBukgTIjkgYJ3DVk8hGikgZyK/7YwFuM45qJHLhRB ohA5ckpJk7BSdlppEqXLiCyFzbwEE6TMm0VyctzJE1NNLNUAGj2K9FvPochG+Ky482nDokydRK3q bBZWJle3BqHqddvSsH60kh039qwMsGrjEZFqkG3bGWnnupBr12LdvI3M8tX79u8Tp4IBCy2sAi/i rohPEm7sODDkE4oLR02KOTO9x5MZQ64s2HNj0H9FL+b8ee9pv6kld0Y9WrVl2KsPv2Yd23XrEHDv mZ6Nu3aO3vBI8/0dmjZw27tNTaYsO/kszdSrn9Odm/fzlsyzO3+OvLRy6d2FfyCeLvzx8eKxm/eA Xpz6vMbpR2+vHfz99cGXD1nfXp9d8wnIHn/l+XcegPvZ1x95w1kHIXUFMhjUIfFpA1SFN1w4TYYa fqLgh39w2IyHIjaI34nXhKjiivq16OJtMHrD4ozm1GhjFyQeY2KOG73oo44RDplUAQA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0019_image014.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhQgAPAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAwA+ AAkAgAAAAAAAAAInhI+py70RnJy0QlizpvfuDxpdJ47miabqOoauhL5yY8724906gi0FADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0015.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
9
Data members: objects or pointers?
int arr[0]
W= hich do you choose?
S= imilar to stack-based vs. heap-based object question
Y= ou must be the judge of this as well
C= ompare ObjData.cpp and PtrDa= ta.cpp
Object Data Members
Pointer Data Members
int arr[1]
int arr[2]
int arr[0]
int arr[1]
int arr[2]
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0015_image015.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0015_image016.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhwAFkAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAAC9 AWIAgQAAAAAAAMz/zAECAwL/hI9poe0Po5y02ouz3rz7D4bi6AUmiabqyrbuC8eyZdbzjef6zvc+ WAsegsSi8YhMKpdM4e8JjUqnjSZTgM1qt9yu9wsOi8EMKtWKTqvXRLO7ZAQExvS6/T4uv6FzvP8P +KW3R1hRNBSYqOg3WMjTtxgp6dXoaFllgwA5yTlZeXmz2Tma+AkKeqIgSsqKZ3oKs9o6mwdrGyFL q0t5i5O7C5z12gv7Gww8TJxifKybrGzJ3Dz7DC0iPc1abb2HnT26zV3yPR0ufkbebH6u4Z0uuc7O 9x4cL09Dj3x/6p5fur/MnzOAl/oJ/GOPIK6D1BQ6MsjwTkKHDiBGrDNxApuN/xw7Ohl3ERzFEBZD iskooaRJMkBWckI5EpFLeCtUzuQCc8HNSDlj2twprCZQRT1/Du050ihQpFWG/vugdCdTh1FvTk1Q dWZRp4GuEszq0qtMroxaki0bE+RZiULXsoXq9m1aDmBXitUZF6PZvLXm0uVL564cwH3VEhbk9+9h lirqmty6GHHidpElB6zcBTLmLYLlOQ4p+PPFoh5Lm24ymfJmzm1XB4Xr+nXqC6dr2z7UOLbsDqIj dp4N/EFvhppj/w6OXJNuLMVdH0+efPjB5qufQw8uXSD1zdavz87ubzvm7t4ng88nvjL58n7P00sf eT37tO7fwV8sf37S5QLuH//Orx9V/PlHGIABfjXgXsYdyCAGtz1om4LONUghBfWlQyBgBlZ4zoXk ZMjXhhxy4+E3IOYl4ojQlJjNiXGlqCIxLJYjYXUx3oiXbi66BSOOxSQIm44+xjijOjVyN6SKRR6z 41o9JhkNkIZNCGWFS9Zz5HhVWiklb11uGeCV+kAFYZkegdmgmLs0edaTaLqh5kBBLvhmmF9uECct btY5RZ4NzUkln+z52QqbZO0p6DzLGcoVoon+QKg2War3aHmRksKoU45W+sidqgnJKXSXigSojaFG 52kGo3ay6am+pOogrK7SJys+i86KnZm6sjFpfLgCt+pLveL363e1GnJssQCYBevJsP8pa16yGkkL LTvM0lQqktXOdS1Pzha4LbfULnRruD6NC0G3i7Rq7mWgTmlquwKWC6+28iqkLlHfanjvvO96SW+/ ++T7FBy7HmyFwAgGrHDDMRDclcMSP4zuxBarWvHFGluY8cYeC9fxxyIrx/DIJiNb8skqpxvyyhtD DAi7LkMJM0Iz31xRyzhLXDNaO/+McNBMFAAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0015_image017.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhUwAOAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgBP AAoAgAAAAAAAAAIwhI+py+2PApy0Whby3bybDHriiIEhYKbqyrbuC8fyTNcviXtrznNpD7ycgsSJ ZFEAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0006.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
10
Thorny Details
&#= 8226;Complicated C++ object details
&= #8211;Can cause unexpected behavior
&= #8211;We'll cover the high-level bits
&= #8211;HW5 helps you think about these
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0006_image018.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0022.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
11
Thorny Details:
Automatically Crea= ted Methods
C++ Defines several hi= dden methods
The "Big Three"
Destructor =
Copy Constructor <= /span>
Assignment Operator= 3;
Default Constructor= 3;
You can define all of these yourself
Doing so overrides default
Warning: Be aware of these!
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0022_image019.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0021.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
12
The "Big Three"
•<= /span>Copy constructor
Class(const Class &rhs);
–<= /span>Default calls copy constructor on all data members=
–<= /span>copy constructor for primitive types copies bits&#= 13;
•<= /span>Assignment operator
const Class &operator=3D( const Class &rhs);=
–<= /span>Default calls assignment operator on all data members
–<= /span>Assignment operator for primitive types copies bit= s
•<= /span>Destructor
~Class();
–<= /span>Does NOT call delete on any data members!
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0021_image020.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0028.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
13
When are copies made?
IntCell a;      // 0-arg constructor
IntCell b(a); =   // Copy constructor
IntCell c =3D a;&nb= sp; // Copy constructor
IntCell d;      // 0-arg constructor
d =3D a;        = ;  // Assignment operator
vector<IntCell> v;
v.push_back(a); // Copy constructor <= /div>
•<= /span>Hard to remember which happens when!
–<= /span>There's an extra credit problem in HW5 for the cur= ious
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0028_image021.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0029.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
14
Trouble with the "Big Three"= ;
•<= /span>Default copying can cause unexpected behavior =
Especially with pointer data members (shallow copies)
–<= /span>See PtrDat= aBug.cpp
= 3;
int fun() {
   IntCell ic1;
   IntCell ic2 =3D ic1;
}
•<= /span>Lesson: When using pointer data members
–<= /span>Define your own Copy Constructor
–<= /span>Define your own Assignment Operator<= /div>
ic1
ic2
???
???
Stack
Heap
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0029_image022.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0029_image023.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0029_image024.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhHgAfAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAc ABsAgQAAAAAAALvg4wECAwJYhH+By70BnXRBCDWzqRZryXXe91jmlUHqGp4j056y+ybzPddAjN81 38uNgMGcrYiMEJEyFbOIWT49UujwaSxhTbqqkMJa+UhaF7l80ZFCanIlcm7A43J6AQA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0029_image025.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
15
Trouble with the "Big Three"= ;
•<= /span>Default copying can cause unexpected behavior =
Especially with pointer data members (shallow copies)
–<= /span>See PtrDat= aBug.cpp
= 3;
int fun() {
   IntCell ic1;
   IntCell ic2 =3D ic1;
}
•<= /span>Lesson: When using pointer data members
–<= /span>Define your own Copy Constructor
–<= /span>Define your own Assignment Operator<= /div>
ic1
ic2
???
Stack
0
Heap
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031_image026.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031_image027.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031_image028.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhHgAfAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAb ABsAgQAAAAAAALvg4wECAwJahH+By42hnGxBwIlNFTbPzUUeA4YiBaUqx4ZS2cbt+ch2fC3wbdM7 L8sBfsCgpojsEJOzJdMCed4iTqSoyhMOpSzalusdqsa98Mc4qnXNGRDbs3nDtWldHVAAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031_image029.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0031_image030.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhowAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAACh ABwAgQAAAAAAAMz/zAECAwLMhI+py+2fgpy02ouz3pzDD4YiEAjmiabqyrbuC7vBSNdjGef6zsOz DQwucL2i8cj6CZdBIvIJ3SmZ1Fv0ipVVtyJn9oudcscML/iMFJPXBzP6zVOzm3IS/F6sz2sUhRsP mLRHZYHwF4h4ojfYdWFwmIjYMUlZSRmJmbLICILxmAkqsMkJUdgWmjlK6tAXgYqpulpWB/l6Fivb ZZuIm9u5K+m7VQscJlxFXBzVe8yqjMfcXPZ8Fy3tRw1nfW2Y/bbN/el9Gw5keY6eXlkAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
16
Trouble with the "Big Three"= ;
•<= /span>Default copying can cause unexpected behavior =
Especially with pointer data members (shallow copi= es) See PtrDat= aBug.cpp
= 3;
int fun() {
   IntCell ic1;
   IntCell ic2 =3D ic1;
}
•<= /span>Lesson: When using pointer data members
–<= /span>Define your own Copy Constructor
–<= /span>Define your own Assignment Operator<= /div>
ic1
ic2
Stack
0
Heap
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032_image031.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032_image032.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032_image033.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhHgAfAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAc ABsAgQAAAAAAALvg4wECAwJYhH+By70BnXRBCDWzqRZryXXe91jmlUHqGp4j056y+ybzPddAjN81 38uNgMGcrYiMEJEyFbOIWT49UujwaSxhTbqqkMJa+UhaF7l80ZFCanIlcm7A43J6AQA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032_image034.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0032_image035.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhowArAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAACh ACkAgQAAAAAAAMz/zAECAwL/hI+py+2fgpy02ouz3pzDD4YiEAjmiabqyrbuC7vBSNdjGef6zsOz DQwucL2i8cj6CZdBIvIJ3SmZ1Fv0ipVVtyJn9oudcscML/iMFJPXBzP6zVOzm3IS/F6sz2sUhRsP mLRHZYHwF4h4ojcYkmFwmIjYMUlZSRmJmbLICOIImXm3yQnhCQoqOuqA8WiaiZrqt8raGvkKSzLx 2NdGW3v7UBEhEdGbaDu4G+tXLPkrPEzzyRzmjJtrIz0ddVyVDJSt/cQt5E0eHsoYvAV+bjR+cz3G 3t7z/lEub6m/z0/JpV4toMBO8QYaPGioIMKFAgEyfOgMH8SJ6RRSvDjHIcaNHWQkcvy4xCPIkXxE kjxJEBrKlfBUsnzZyB7MlQUAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
17
Trouble with the "Big Three"= ;
•<= /span>Default copying can cause unexpected behavior =
Especially with pointer data members (shallow copies)
–<= /span>See PtrDat= aBug.cpp
= 3;
int fun() {
   IntCell ic1;
   IntCell ic2 =3D ic1;
}
•<= /span>Lesson: When using pointer data members
–<= /span>Define your own Copy Constructor
–<= /span>Define your own Assignment Operator<= /div>
ic1
ic2
Stack
0
Heap
Deleted Twice!!!
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image036.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image037.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image038.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhHgAfAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAgAb ABsAgQAAAAAAALvg4wECAwJahH+By42hnGxBwIlNFTbPzUUeA4YiBaUqx4ZS2cbt+ch2fC3wbdM7 L8sBfsCgpojsEJOzJdMCed4iTqSoyhMOpSzalusdqsa98Mc4qnXNGRDbs3nDtWldHVAAADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image039.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWwAdAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAABa ABwAgQAAAAAAAMz/zAECAwJijI+py+0Po5i02ouz3rxv44XiSHpgiaaqdq7uS7bwTGNyjdN3zq97 D4wFgkTUr4jMHJNMyrLJfEKR0imxagVis7wtF+f96obiZrj8OqN95HVR7Ta249o5vWu/gyP8vv/f VwAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image040.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhowArAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAEAAACh ACkAgQAAAAAAAMz/zAECAwL/hI+py+2fgpy02ouz3pzDD4YiEAjmiabqyrbuC7vBSNdjGef6zsOz DQwucL2i8cj6CZdBIvIJ3SmZ1Fv0ipVVtyJn9oudcscML/iMFJPXBzP6zVOzm3IS/F6sz2sUhRsP mLRHZYHwF4h4ojcYkmFwmIjYMUlZSRmJmbLICOIImXm3yQmB8QgKKjrqUGp3ipmq6sfa6poIG0sy 8djXVht5y8lrKBHha4vbIByh9mmcBbym3OgcCL0lbUWNZ82ETdOsDcUN5G0DHp7GWN6EDjfeqEt2 3p4XHc9mma+/X8m1jgwwYKd7AgsaXEXwoMKF/xY6xNXwocRBESdalJfwosY9GxU3eqRD7KPIMR1H mhwY8qRKchlXuuzyMiaQAgA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image041.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhGgAhAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAcABgAS ABoAgAAAAAAAAAIyDI6pF73PmoNJSoqsxUBf6hmYxkUbN3WlGJVK6qpxO3dsDK+3m+u1POuhdquf cEREFQAAOw== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0033_image042.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhgwBKAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAMAAQB9 AEgAgQAAAAAAAP//AAECAwL/hI+py+0PU4i02ovzC1P7D4ab0InmiUaBQKbu665sCdf2Jbf3zju5 3gv2OKwiTcgRHpKhn1GJ4DCHQI3zCV2upLvc0XLFZpfGaaxYrYTFY4OTm3p/fej6rC25wpv2u6qP Noe3tmcFmLawFojHQARYqHbol6i4iCFlhlJJkjkiyamwadmAicl29skpGJXKJmpZanq4euKYCsna 6vcaaKuLWMM7kylc9nvcR/vi2wpXjAxtpxwczRx93TyIvc0tOd313C2ezJg7fn78jRSO3h2LefNu 3U6fLn/5Xq+/XwavFcsvoMBeeQYaNIhLy8GF9Do1Yscw4jB1USBKFJgQjMWL+Q0pqtjIkVvGJiBD QnMYp6RJex4zzFu5D2UtlTB1jRTxsmY9mR5y6ozJUw3Nn9eC+hhKdJvRikiTysv3KKjPpEo/Pk04 lWrVZRtlaSU3U9HVUmS+giU5tmXTas9aBll7EkDWU+XctGNXYq5bHkgntA0laq+NwHN1FBPkUzC1 WR1e0RBGK6fiZcnMOJZgE8K8yXGkzQmc6JZQaXXl9qPjrdEntT84m9iytFLk1PjoQlla9iypWT23 lAbDW7NuK66zhKGo5/XvSKSZ214+uDnwSdCp1Nkro3j16dRxANu+uDsO7eD/iC9f3gv69WXJs4/3 /T103PIZuS9XAAA7 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0023.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
18
Default Constructor
•<= /span>Default (0-parameter) constructor
–<= /span>Calls 0-parameter constructor on all members <= /span>
–<= /span>Default constructor for primitive types does nothing
–<= /span>Only created if you don't define a constructor = ;
•<= /span>When is this called?
–<= /span>Stack-based declaration
IntCell ic;
–<= /span>When initializing arrays/vectors
vector<IntCell> vec(10);
–<= /span>In other constructors
•<= /span>Unless an "initializer list" is used (mo= re later)
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0023_image043.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0005.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
19
Thorny Details: Constructors
&#= 8226;Initializer Lists
&= #8211;IntCell= (int x) : i(x) {}
R= 11;Necessary if data member has no default constr.
&#= 8226;Implicit Type conversions
= 211;IntCell= (int x);
= 211;IntCell= ic =3D 5; // Implicit conversion!
&= #8211;prevented by using explicit
= 226;explicit IntCell(int = i);
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0005_image044.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0024.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
20
Thorny Details: const
•<= /span>const objects can't be modified =
const IntCell ic;
ic.setValue(5);&nbs= p; // Compile Error!
•<= /span>How do we identify methods that don't modify? =
void setValue(int i) const;
•<= /span>const references
const Class &operator=3D(const Class &rhs);<= /b>
–<= /span>Reference parameter that works on expressions/casts!
–<= /span>Returning references
•<= /span>Avoid this in general! It's easy to return dangling references!
•<= /span>It works in operators, because they return = *this
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0024_image045.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0008.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
21
Note on strings, vectors, and I/O<= /div>
A= ll are very complex template classes
N= asty compile error messages!
W= hy are we learning to use them?
Th= ey appear in examples and book (and HW5)
Th= ey make life easier once you know how to use them
R= eference Materials
F= ollowing pages give overview of everything you need
L= inks to (complex) docs on course web page
&= quot;Computing Resources" page (toward bottom)
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0008_image046.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0009.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
22
Class details: vectors
•<= /span>Initializing & Copying (it's stack-based!) = ;
vector<t> vec1;        : Creates Empty Vector
vector<t> vec2(5);     : Calls 0-arg constr. 5 times
vector<t> vec3 =3D vec1; : Calls Copy Constructor
•<= /span>Accessing Elements & size
int i =3D vec2[0];
unsigned int j =3D vec2.size();
•<= /span>Comparing Vectors
(vec1 =3D=3D vec2) : Compares size & all elements
        = ;       : using object's operator= =3D=3D (if defined)
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0009_image047.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0010.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
23
Class details: vectors (cont'd)
M= anipulating Elements
R= 11;vec1[0]= =3D 5;       : Calls operator=3D
R= 11;vec1.pu= sh_back(5); : Resizes automatically
R= 11;vec1.re= size(10);   : Manual resize
= 211;
= 211;int *p = =3D &vec1[0];
R= 11;*(p + 1= ) =3D 5;      <= /b>: Pointer arithmetic works!!
= 211;
C= ompare C and C++ in vectors.cpp <= /span>
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0010_image048.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0011.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
24
Class details: strings
U= se strings like vectors, plus the following
I= nitialize from any (char *)
= 211;string = str1 =3D "Hello";
C= oncatenating
= 211;str3 = =3D str1 + str2;
G= etting C-strings
= 211;char *c= str =3D str1.c_str();
D= on't modify the data or free this pointer!
C= ompare C and C++ in strings.cpp <= /span>
R= 26;
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0011_image049.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0012.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
25
Class details: istreams & ostreams
U= sing >> and <<
S= ends data "in the direction of the arrows"
M= ost types know how to read/write themselves
S= ending endl sends '\n' and flushes stream
C= an chain expressions
R= 26;cout &l= t;< " " << i << endl;
H= ow? The result of stream << data is another stream
T= o read cin until it ends, use good() method
R= 11;while (= (cin >> i).good() )  {  }  
C= ompare C and C++ in io.cpp
R= 26;
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0012_image050.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0025.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
26
Reading
&#= 8226;C++ for Java Programmers
&= #8211;Chapter 4: Object-based prog. (read most of it)
&= #8226;Skip 4.7: Friends
&= #8226;Skip 4.8: Nested Classes
&= #8211;Chapter 5: Operator Ovrerloading
&= #8226;5.1: Basics of Operator Overloading
&= #8226;5.2: Overloading I/O
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0025_image051.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAAAAmQLkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0003.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16
11/8/2006
CSE 303 Lecture 16
27
Next Time
Version Control Tools
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/slide0003_image052.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlh4gFEAHcAMSH+GlNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNlACH5BAEAAAAALAAAAADg AUMAgAAAAJkAAALkjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si 8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvmMTqvX7Lb7DY/L5/S6/Y7P6/f8vv8PGCg4SFho eIiYqLjI2Oj4CBkpOUlZaXmJmam5ydnp+QkaKjpKWmp6ipqqusra6voKGys7S1tre4ubq7vL2+v7 CxwsPExcbHyMnKy8zNzs/AwdLT1NXW19jZ2tvc3d7f0NHi4+Tl5ufo6err7O3u7+Dh8vP09fb3+P n6+/z9/v/w8wYIgCADs= ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master01.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
<= /div>
<= /div>
<= /div>
‹h= eader›
<= /div>
<= /div>
<= /div>
‹date/time›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
<= /div>
<= /div>
<= /div>
‹f= ooter›
<= /div>
<= /div>
<= /div>
‹#›
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master03_stylesheet.css Content-Transfer-Encoding: base64 Content-Type: text/css Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiM5OTAwMDA7DQoJZm9udC1zaXpl OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246 bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0 OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93 OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0 XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250 LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250 LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6Izk5MDAwMDsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13 cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0OmJ1bGxldFwyMDIyO30NCi5IQg0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1m YW1pbHk6QXJpYWw7DQoJY29sb3I6Izk5MDAwMDsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIxDQoJe21zby1jaGFyLXdy YXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjINCgl7bXNvLWNoYXItd3JhcDox Ow0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMw0KCXttc28tY2hhci13cmFwOjE7DQoJ bXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEI0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5RQg0KCXtjb2xvcjojOTkwMDAwOw0KCW1zby1jaGFyLXdy YXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjENCgl7bXNvLWNoYXItd3JhcDox Ow0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMg0KCXttc28tY2hhci13cmFwOjE7DQoJ bXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIzDQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjQNCgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5z b2t1LW92ZXJmbG93OjE7fQ0KLlRibA0KCXtjb2xvcjojOTkwMDAwOw0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwxDQoJe21zby1jaGFyLXdyYXA6MTsN Cgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwyDQoJe21zby1jaGFyLXdyYXA6MTsNCglt c28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwzDQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmw0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5kZWZhdWx0Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6bm9idWxs ZXRcMjAyMjt9DQouZGVmYXVsdA0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KCWZvbnQtc3R5bGU6bm9ybWFsOw0KCXRleHQtZGVj b3JhdGlvbjpub25lOw0KCXRleHQtc2hhZG93Om5vbmU7DQoJdGV4dC1lZmZlY3Q6bm9uZTsNCglt c28tZmFyZWFzdC1oaW50Om5vOw0KCWxheW91dC1mbG93Omhvcml6b250YWw7DQoJY29sb3I6Ymxh Y2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjg1JTsNCgltc28tdGV4dC1yYWlz ZTowJTsNCgltc28tbGluZS1zcGFjaW5nOiIxMDAgMCAwIjsNCgltc28tbWFyZ2luLWxlZnQtYWx0 OjA7DQoJbXNvLXRleHQtaW5kZW50LWFsdDowOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxOw0KCWRpcmVjdGlvbjpsdHI7DQoJbXNvLXdvcmQtd3JhcDoxOw0KCW1z by12ZXJ0aWNhbC1hbGlnbi1zcGVjaWFsOmJhc2VsaW5lOw0KCW1zby1hbnNpLWxhbmd1YWdlOkVO LVVTO30NCmE6bGluaw0KCXtjb2xvcjojMDA5OTk5ICFpbXBvcnRhbnQ7fQ0KYTphY3RpdmUNCgl7 Y29sb3I6IzMzMzM5OSAhaW1wb3J0YW50O30NCmE6dmlzaXRlZA0KCXtjb2xvcjojOTlDQzAwICFp bXBvcnRhbnQ7fQ0K ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/master04_stylesheet.css Content-Transfer-Encoding: base64 Content-Type: text/css Ym9keQ0KCXt3aWR0aDo1MzRweDsNCgloZWlnaHQ6NDAwcHg7fQ0KLlRCDQoJe21zby1zcGVjaWFs LWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5UDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQt ZmFtaWx5OkFyaWFsOw0KCWNvbG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQt c2l6ZToyMDklOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5CQg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMjI7fQ0KLkINCgl7dGV4dC1hbGln bjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOiMwMDAwOTk7DQoJZm9udC1zaXpl OjE1MiU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkIx Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6YnVsbGV0XDIwMTM7fQ0KLkIxDQoJe3RleHQtYWxpZ246 bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5k ZXg6MTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Ut b3ZlcmZsb3c6MTt9DQouQjJCDQoJe21zby1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMjAyMjt9DQou QjINCgl7dGV4dC1hbGlnbjpsZWZ0Ow0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNr Ow0KCW1zby1jb2xvci1pbmRleDoxOw0KCWZvbnQtc2l6ZToxMTQlOw0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5CM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0 OmJ1bGxldFwyMDEzO30NCi5CMw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjk1JTsN Cgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQjRCDQoJe21z by1zcGVjaWFsLWZvcm1hdDpidWxsZXRcMDBCQjt9DQouQjQNCgl7dGV4dC1hbGlnbjpsZWZ0Ow0K CWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNvbG9yOmJsYWNrOw0KCW1zby1jb2xvci1pbmRleDoxOw0K CWZvbnQtc2l6ZTo5NSU7DQoJbXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93 OjE7fQ0KLk5CDQoJe21zby1zcGVjaWFsLWZvcm1hdDpub2J1bGxldFwyMDIyO30NCi5ODQoJe3Rl eHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28t Y29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5OMUINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0 XDIwMjI7fQ0KLk4xDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCglj b2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5OMkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4yDQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250 LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250 LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30N Ci5OM0INCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIwMjI7fQ0KLk4zDQoJe3RleHQt YWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xvcjpibGFjazsNCgltc28tY29s b3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5ONE4NCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLk40DQoJe3RleHQtYWxpZ246bGVmdDsNCglmb250LWZhbWlseTpBcmlhbDsNCgljb2xv cjpibGFjazsNCgltc28tY29sb3ItaW5kZXg6MTsNCglmb250LXNpemU6NTclOw0KCW1zby1jaGFy LXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PQg0KCXttc28tc3BlY2lhbC1m b3JtYXQ6bm9idWxsZXRcMjAyMjt9DQouTw0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6YmxhY2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXpl Ojg1JTsNCgltc28tY2hhci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzEN Cgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLk8yDQoJe21z by1jaGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5PMw0KCXttc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouTzQNCgl7bXNvLWNoYXItd3Jh cDoxOw0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCQg0KCXttc28tc3BlY2lhbC1mb3Jt YXQ6bm9idWxsZXRcMjAyMjt9DQouQ0INCgl7dGV4dC1hbGlnbjpjZW50ZXI7DQoJZm9udC1mYW1p bHk6QXJpYWw7DQoJY29sb3I6IzAwMDA5OTsNCglmb250LXNpemU6MTUyJTsNCgltc28tY2hhci13 cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0IxDQoJe21zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5DQjINCgl7bXNvLWNoYXItd3JhcDoxOw0K CW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkNCMw0KCXttc28tY2hhci13cmFwOjE7DQoJbXNv LWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouQ0I0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5DVEINCgl7bXNvLXNwZWNpYWwtZm9ybWF0Om5vYnVsbGV0XDIw MjI7fQ0KLkNUDQoJe3RleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtZmFtaWx5OkFyaWFsOw0KCWNv bG9yOndoaXRlOw0KCW1zby1jb2xvci1pbmRleDowOw0KCWZvbnQtc2l6ZToyMDklOw0KCW1zby1j aGFyLXdyYXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQkINCgl7bXNvLXNwZWNp YWwtZm9ybWF0OmJ1bGxldFwyMDIyO30NCi5IQg0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1m YW1pbHk6QXJpYWw7DQoJY29sb3I6IzAwMDA5OTsNCglmb250LXNpemU6MTMzJTsNCgltc28tY2hh ci13cmFwOjE7DQoJbXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEIxDQoJe21zby1jaGFyLXdy YXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5IQjINCgl7bXNvLWNoYXItd3JhcDox Ow0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLkhCMw0KCXttc28tY2hhci13cmFwOjE7DQoJ bXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouSEI0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5RQg0KCXtjb2xvcjojMDAwMDk5Ow0KCW1zby1jaGFyLXdy YXA6MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjENCgl7bXNvLWNoYXItd3JhcDox Ow0KCW1zby1raW5zb2t1LW92ZXJmbG93OjE7fQ0KLlFCMg0KCXttc28tY2hhci13cmFwOjE7DQoJ bXNvLWtpbnNva3Utb3ZlcmZsb3c6MTt9DQouUUIzDQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5RQjQNCgl7bXNvLWNoYXItd3JhcDoxOw0KCW1zby1raW5z b2t1LW92ZXJmbG93OjE7fQ0KLlRibA0KCXtjb2xvcjojMDAwMDk5Ow0KCW1zby1jaGFyLXdyYXA6 MTsNCgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwxDQoJe21zby1jaGFyLXdyYXA6MTsN Cgltc28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwyDQoJe21zby1jaGFyLXdyYXA6MTsNCglt c28ta2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmwzDQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28t a2luc29rdS1vdmVyZmxvdzoxO30NCi5UYmw0DQoJe21zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxO30NCi5kZWZhdWx0Qg0KCXttc28tc3BlY2lhbC1mb3JtYXQ6bm9idWxs ZXRcMjAyMjt9DQouZGVmYXVsdA0KCXt0ZXh0LWFsaWduOmxlZnQ7DQoJZm9udC1mYW1pbHk6QXJp YWw7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KCWZvbnQtc3R5bGU6bm9ybWFsOw0KCXRleHQtZGVj b3JhdGlvbjpub25lOw0KCXRleHQtc2hhZG93Om5vbmU7DQoJdGV4dC1lZmZlY3Q6bm9uZTsNCglt c28tZmFyZWFzdC1oaW50Om5vOw0KCWxheW91dC1mbG93Omhvcml6b250YWw7DQoJY29sb3I6Ymxh Y2s7DQoJbXNvLWNvbG9yLWluZGV4OjE7DQoJZm9udC1zaXplOjg1JTsNCgltc28tdGV4dC1yYWlz ZTowJTsNCgltc28tbGluZS1zcGFjaW5nOiIxMDAgMCAwIjsNCgltc28tbWFyZ2luLWxlZnQtYWx0 OjA7DQoJbXNvLXRleHQtaW5kZW50LWFsdDowOw0KCW1zby1jaGFyLXdyYXA6MTsNCgltc28ta2lu c29rdS1vdmVyZmxvdzoxOw0KCWRpcmVjdGlvbjpsdHI7DQoJbXNvLXdvcmQtd3JhcDoxOw0KCW1z by12ZXJ0aWNhbC1hbGlnbi1zcGVjaWFsOmJhc2VsaW5lOw0KCW1zby1hbnNpLWxhbmd1YWdlOkVO LVVTO30NCmE6bGluaw0KCXtjb2xvcjojMDA5OTk5ICFpbXBvcnRhbnQ7fQ0KYTphY3RpdmUNCgl7 Y29sb3I6IzMzMzM5OSAhaW1wb3J0YW50O30NCmE6dmlzaXRlZA0KCXtjb2xvcjojOTlDQzAwICFp bXBvcnRhbnQ7fQ0K ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/script.js Content-Transfer-Encoding: quoted-printable Content-Type: application/javascript; charset="us-ascii" function LoadSld() { var sld=3DGetObj("SlideObj") if( !g_supportsPPTHTML ) { =09 sld.style.visibility=3D"visible" return } if( MakeNotesVis() ) return runAnimations =3D _InitAnimations(); =09 if( IsWin("PPTSld") ) parent.SldUpdated(GetSldId()) g_origSz=3DparseInt(SlideObj.style.fontSize) g_origH=3Dsld.style.posHeight g_origW=3Dsld.style.posWidth g_scaleHyperlinks=3D(document.all.tags("AREA").length>0) if( g_scaleHyperlinks ) InitHLinkArray() if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) ) document.body.scroll=3D"no" _RSW() if( IsWin("PPTSld") && parent.IsFullScrMode() ) FullScrInit(); =09 MakeSldVis(); ChkAutoAdv() if( runAnimations ) { if( document.all("NSPlay") ) document.all("NSPlay").autoStart =3D false; if( sld.filters && sld.filters.revealtrans ) setTimeout( "document.body.start()", sld.filters.revealtrans.duration * = 1000 ); else document.body.start(); } } function MakeSldVis()=20 { var fTrans=3Dg_showAnimation && SldHasTrans() if( fTrans )=09 { if( g_bgSound ) { idx=3Dg_bgSound.indexOf(","); pptSound.src=3Dg_bgSound.substr( 0, idx ); pptSound.loop=3D -(parseInt(g_bgSound.substr(idx+1))); } SlideObj.filters.revealtrans.Apply()=09 } SlideObj.style.visibility=3D"visible" if( fTrans ) SlideObj.filters.revealtrans.Play() } function MakeNotesVis()=20 { if( !IsNts() ) return false=20 SlideObj.style.display=3D"none" nObj =3D document.all.item("NotesObj") parent.SetHasNts(0) if( nObj ) {=20 nObj.style.display=3D"" parent.SetHasNts(1) } return 1 } function ChkAutoAdv() { if(SldHasTrans()) SlideObj.onfilterchange=3DAutoAdv else AutoAdv() } function AutoAdv() { if(!IsWin("PPTSld") || !gUseSldTimings )return var sld=3DGetCurSld() if( (sld.mAdvDelay>0) && !parent.IsFramesMode() ) setTimeout("parent.GoToNextSld()",sld.mAdvDelay) } function GetObj(id) { if(g_supportsPPTHTML) return document.all(id); else return document.getElementById(id); } function SldHasTrans() { return SlideObj.style.filter !=3D ""; } function GetSldId()=20 { var regExp =3D /file:\/\/\//i var pos =3D location.href.search(regExp) if (MHTMLPrefix !=3D "" && pos !=3D -1) sId =3D location.href.substring(pos) else { sId =3D RemoveFilePrefixFromHref(location.href); var regExp =3D /\// var fixedHref =3D sId var pos =3D -1 =09 pos =3D fixedHref.search(regExp) while (pos !=3D -1) { fixedHref =3D fixedHref.replace(regExp, "\\") pos =3D fixedHref.search(regExp) } =09 if (g_fBaseHyperlink =3D=3D true) sId =3D "file:///" + fixedHref; else sId =3D fixedHref.substring(fixedHref.lastIndexOf('\\') + 1) } =09 return sId } function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctx= tmenu") && PPTSld.ctxtmenu.style.display!=3D"none" ) { PPTSld.ctxtmenu.styl= e.display=3D'none'; return true } return false } function IsWin( name ) { return window.name =3D=3D name } function IsNts() { return IsWin("PPTNts") } function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) } function SupportsPPTAnimation() { return( navigator.platform =3D=3D "Win32"= && navigator.appVersion.indexOf("Windows")>0 ) } function SupportsPPTHTML() { var appVer=3Dnavigator.appVersion, msie=3DappVer.indexOf("MSIE "), ver=3D0 if( msie >=3D 0 ) ver=3DparseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) ) else ver=3DparseInt(appVer) return( ver >=3D 4 && msie >=3D 0 ) } function _RSW() { if( !g_supportsPPTHTML || IsNts() || ( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) ) return var padding=3D0; if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=3D6 cltWidth=3Ddocument.body.clientWidth-padding cltHeight=3Ddocument.body.clientHeight-padding factor=3D(1.0*cltWidth)/g_origW if( cltHeight < g_origH*factor ) factor=3D(1.0*cltHeight)/g_origH newSize =3D g_origSz * factor if( newSize < 1 ) newSize=3D1 s=3DSlideObj.style s.fontSize=3DnewSize+"px" s.posWidth=3Dg_origW*factor s.posHeight=3Dg_origH*factor s.posLeft=3D(cltWidth-s.posWidth+padding)/2 s.posTop=3D(cltHeight-s.posHeight+padding)/2 if( g_scaleHyperlinks ) ScaleHyperlinks( factor ) } function _InitAnimations() { animRuntimeInstalled =3D ''+document.body.localTime !=3D 'undefined'; isFullScreen =3D (window.name =3D=3D "PPTSld") && !parent.IsFramesMode(); g_animUseRuntime =3D g_showAnimation && animRuntimeInstalled && !(isFullSc= reen && parent.IsSldVisited()); if( g_animUseRuntime ) { collSeq =3D document.all.tags("seq"); if( collSeq !=3D null ) { for(ii=3D0;ii numSlds ) gSldJumpIdx =3D numSlds; if ( gSldJumpIdx >=3D 0 ) { if ( gSldJumpIdx =3D=3D 0 ) gSldJumpIdx =3D 1; var jumpTo =3D parseInt(gSldJumpIdx); gSldJump =3D 0; gSldJumpIdx =3D ""; win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref ) } } } function _KDH() { if( event.keyCode =3D=3D 8 ) { event.returnValue =3D 0; parent.GoToPrevSld(); } } function DocumentOnClick() { if( IsNts() || parent.HideMenu() ) return; if( ( g_allowAdvOnClick && !parent.IsFramesMode() ) || (event && (event.keyCode=3D=3D32) ) ) parent.GoToNextSld(); } var g_supportsPPTHTML =3D SupportsPPTHTML(), g_scaleInFrame =3D 1, gId=3D""= , g_bgSound=3D"", g_scaleHyperlinks =3D false, g_allowAdvOnClick =3D 1, g_showInBrowser = =3D 0, gLoopCont =3D 0, gUseSldTimings =3D 1; var g_showAnimation =3D g_supportsPPTHTML && SupportsPPTAnimation() && ( (w= indow.name=3D=3D"PPTSld" && !parent.IsFramesMode()) || g_showInBrowser );va= r g_animManager =3D null; var g_animUseRuntime =3D false; var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime; var g_animMainSequence =3D null; var ENDSHOW_MESG=3D"End of slide show, click to exit.", SCREEN_MODE=3D"Fram= es", gIsEndShow=3D0, NUM_VIS_SLDS=3D27, SCRIPT_HREF=3D"script.js", FULLSCR_= HREF=3D"fullscreen.htm"; var gCurSld =3D gPrevSld =3D 1, g_offset =3D 0, gNtsOpen =3D gHasNts =3D gO= tlTxtExp =3D 0, gHasNarration =3D 0, gOtlOpen =3D true window.gPPTHTML=3DSupportsPPTHTML() var g_fBaseHyperlink =3D false; var gMainDoc=3Dnew Array(new hrefList("slide0001.htm",1,-1,1),new hrefList(= "slide0026.htm",1,-1,1),new hrefList("slide0013.htm",1,-1,1),new hrefList("= slide0014.htm",1,-1,1),new hrefList("slide0017.htm",1,-1,1),new hrefList("s= lide0018.htm",1,-1,1),new hrefList("slide0020.htm",1,-1,1),new hrefList("sl= ide0019.htm",1,-1,1),new hrefList("slide0015.htm",1,-1,1),new hrefList("sli= de0006.htm",1,-1,1),new hrefList("slide0022.htm",1,-1,1),new hrefList("slid= e0021.htm",1,-1,1),new hrefList("slide0028.htm",1,-1,1),new hrefList("slide= 0029.htm",1,-1,1),new hrefList("slide0031.htm",1,-1,1),new hrefList("slide0= 032.htm",1,-1,1),new hrefList("slide0033.htm",1,-1,1),new hrefList("slide00= 23.htm",1,-1,1),new hrefList("slide0005.htm",1,-1,1),new hrefList("slide002= 4.htm",1,-1,1),new hrefList("slide0008.htm",1,-1,1),new hrefList("slide0009= .htm",1,-1,1),new hrefList("slide0010.htm",1,-1,1),new hrefList("slide0011.= htm",1,-1,1),new hrefList("slide0012.htm",1,-1,1),new hrefList("slide0025.h= tm",1,-1,1),new hrefList("slide0003.htm",1,-1,1)); /********************************************* Frameset functions These functions control slide navigation and state of the frameset. **********************************************/ function RemoveFilePrefixFromHref(href) { var regExp =3D /^file:\/\/\//i; return href.replace(regExp, "") } function FullScrInit() { g_allowAdvOnClick =3D GetCurSld().mAdvOnClk document.body.style.backgroundColor=3D"black" document.oncontextmenu=3Dparent._CM; document.onkeydown =3D _KDH; document.ondragstart=3DCancel document.onselectstart=3DCancel self.focus() } function Redirect( frmId ) {=09 var str=3Ddocument.location.hash,idx=3Dstr.indexOf('#'), sId=3DGetSldId() if(idx>=3D0) str=3Dstr.substr(1); if( window.name !=3D frmId && ( sId !=3D str) ) { obj =3D GetObj("Main-File") window.location.href=3Dobj.href+"#"+sId return 1 } return 0 } var MHTMLPrefix =3D CalculateMHTMLPrefix();=20 function CalculateMHTMLPrefix() { if ( document.location.protocol =3D=3D 'mhtml:') {=20 href=3Dnew String(document.location.href)=20 Start=3Dhref.indexOf('!')+1=20 End=3Dhref.lastIndexOf('/')+1=20 if (End < Start)=20 return href.substring(0, Start)=20 else=20 return href.substring(0, End)=20 } return ''; } function GetTags(base,tag) { if(g_supportsPPTHTML) return base.all.tags(tag); else return base.getElementsByTagName(tag); } function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLP= refix+GetHrefObj( gCurSld ).mNtsHref ) } function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() } function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() } function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() } function SetHasNts( fVal ) { if( gHasNts !=3D fVal ) { gHasNts=3DfVal UpdNavPane() } } function ToggleOtlText() { gOtlTxtExp=3D!gOtlTxtExp UpdOtlPane() } function ClearMedia() { // Clear any sounds playing before launching another browser window. Other= wise, // in fullscreen mode, you'll continue to hear the sound in the frames mod= e. if (PPTSld.pptSound) PPTSld.pptSound.loop =3D 0; } function FullScreen() {=20 if ( PPTSld.g_animUseRuntime ) PPTSld.document.body.pause(); ClearMedia(); var href =3D ( document.location.protocol =3D=3D 'mhtml:') ? FULLSCR_HREF = : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref; if (MHTMLPrefix !=3D "") href =3D RemoveFilePrefixFromHref(href) if(PPTNav.event.ctrlKey) { var w =3D (window.screen.availWidth * 1.0) / 2.0 var h =3D w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW win =3D window.open( MHTMLPrefix+href,null,"toolbar=3D0,resizable=3D1,top= =3D0,left=3D0," + "width=3D"+ w + ",height=3D" + h ); if( win.document.body && PPTSld.g_animUseRuntime ) win.document.body.PPTSldFrameset=3Dwindow; } else { win =3D window.open( MHTMLPrefix+href,null,"fullscreen=3Dyes" ); if( win.document.body && PPTSld.g_animUseRuntime ) win.document.body.PPTSldFrameset=3Dwindow; } } function ToggleVNarration() { rObj=3DPPTSld.document.all("NSPlay") if( rObj && !PPTSld.g_animUseRuntime ) { if( (rObj.playState =3D=3D 1)||(rObj.playState =3D=3D 0) ) rObj.Play() else if( rObj.playState =3D=3D 2 ) rObj.Pause() else return; } else if( PPTSld.g_animUseRuntime ) { narObj =3D PPTSld.document.all("narrationID") if( narObj ) narObj.togglePause() } } function GetCurSldNum() { =20 obj=3DGetHrefObj(gCurSld) if( obj.mOrigVis =3D=3D 1 ) return obj.mSldIdx else =20 return gCurSld } function GetNumSlds() { =20 if( GetHrefObj(gCurSld).mOrigVis =3D=3D 1 ) return GetSldList().mNumVisSlds; else return GetSldList().mList.length } function GetSldNum( href ) { for(ii=3D0; ii 1 ) PopSldList(); else if( !IsFramesMode() ) { if( gLoopCont ) GoToFirst() else EndShow() } } function GoToPrevSld() { ii=3DgCurSld-1 if( ii > 0 ) { obj=3DGetHrefObj(ii) while ( obj && ( obj.mVis =3D=3D 0 ) && ( ii>0 ) ) obj=3DGetHrefObj(--ii) if( ii =3D=3D 0 ) ii=3D1 GoToSldNum(ii) } } function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) } function GoToLast() { ii=3DGetSldList().mList.length if( ii !=3D gCurSld ) GoToSld( GetHrefObj(ii).mSldHref ) } function GoToSldNum( num ) { if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue obj =3D GetHrefObj( num ) obj.mVis=3D1 gPrevSld=3DgCurSld gCurSld =3D num; =09 if (MHTMLPrefix !=3D "") PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(obj.mSldHref= )) else PPTSld.location.replace(obj.mSldHref) =09 if( IsFramesMode() ) { UpdNavPane(); UpdOtlPane(); UpdNtsPane() } } function GoToSld( href ) { if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue GetHrefObj( GetSldNum(href) ).mVis=3D1 if (MHTMLPrefix !=3D "") PPTSld.location.replace(MHTMLPrefix+RemoveFilePrefixFromHref(href)) else PPTSld.location.replace(href) } function SldUpdated( id ) { if( id =3D=3D GetHrefObj(gCurSld).mSldHref ) return gPrevSld=3DgCurSld gCurSld=3DGetSldNum(id) if( IsFramesMode() ) { UpdNavPane(); UpdOtlPane(); UpdNtsPane() } } function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) } function HasPrevSld() { return ( gIsEndShow || ( gCurSld !=3D 1 && GetHrefO= bj( gCurSld-1 ).mVis =3D=3D 1 )||( GetCurSldNum() > 1 ) ) } function HasNextSld() { return (GetCurSldNum() !=3D GetNumSlds()) } function CloseWindow() { if( HideMenu() ) return; =09 var event =3D PPTSld.event; if( !IsFramesMode() && event && (event.keyCode=3D=3D27 || event.keyCode=3D= =3D32 || event.type=3D=3D"click" ) ) window.close( self ); CatchNumKeys( self, event ); } function Unload() { gIsEndShow=3D0; } function SetupEndShow() { gIsEndShow=3D1; PPTSld.document.body.scroll=3D"no"; PPTSld.document.onkeypress=3DCloseWindow; PPTSld.document.onclick=3DCloseWindow; PPTSld.document.oncontextmenu=3D_CM; } function EndShow() { if( IsFramesMode() ) return if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue doc=3DPPTSld.document var dir =3D doc.body.dir if( dir !=3D "rtl" ) dir =3D "ltr"; doc.open() doc.writeln('


' + ENDSHOW_MESG + '

') doc.close() } function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=3Dtrue } function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited } function hrefList( sldHref, visible, advDelay, advClk ) { this.mSldHref=3D this.mNtsHref =3D sldHref this.mOrigVis=3D this.mVis =3D visible this.mVisited=3D false this.mAdvDelay=3D advDelay this.mAdvOnClk=3D advClk } function SldList(arr,curSld,fEnd) { this.mCurSld =3D curSld; this.mList =3D new Array(); var idx =3D 1; for(ii=3D0;ii 0) { PushSldList(sldList,fEnd); gCurSld =3D 1; } else if( PPTSld.event ) PPTSld.event.cancelBubble=3Dtrue } function PushSldList(arr,fEnd) { var ii =3D gSldStack.length; gSldStack[ii] =3D new SldList(arr,gCurSld,fEnd); GoToSld( gSldStack[ii].mList[0].mSldHref ); } function PopSldList() { if (gSldStack[gSldStack.length-1].fEndShow) EndShow() else { gCurSld =3D gSldStack[gSldStack.length-1].mCurSld; gSldStack[gSldStack.length-1] =3D null; gSldStack.length--; var sldList =3D gSldStack[gSldStack.length-1]; GoToSld( sldList.mList[gCurSld - 1].mSldHref ); } } var custShowList=3Dnew Array(); /********************************************* Navigation button implementation There are 2 types of buttons: ImgBtn, TxtBtn implemented as function objects. They share a similiar interface so the event handlers can call SetActive, for example, on a button=20 object without needing to know exactly=20 what type of button it is. **********************************************/ //---------------------------------- function ImgBtn( oId,bId,w,action ) //---------------------------------- { var t=3Dthis t.Perform =3D _IBP t.SetActive =3D _IBSetA t.SetInactive=3D _IBSetI t.SetPressed =3D _IBSetP t.SetDisabled=3D _IBSetD t.Enabled =3D _IBSetE t.ChangeIcon =3D null t.UserAction =3D action t.ChgState =3D _IBUI t.mObjId =3D oId t.mBorderId=3D bId t.mWidth =3D w t.mIsOn =3D t.mCurState =3D 0 } function _IBSetA() { if( this.mIsOn ) { obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 ) obj.style.posTop=3D0 } } function _IBSetI() { if( this.mIsOn ) { obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 ) obj.style.posTop=3D0=20 } } function _IBSetP() { if( this.mIsOn ) { obj=3Dthis.ChgState( gShadowClr,gHiliteClr,2 ) obj.style.posLeft+=3D1; obj.style.posTop+=3D1 } } function _IBSetD() { =20 obj=3Dthis.ChgState( gFaceClr,gFaceClr,0 ) obj.style.posTop=3D0=20 } function _IBSetE( state ) { var t=3Dthis GetObj( t.mBorderId ).style.visibility=3D"visible" if( state !=3D t.mIsOn ) { t.mIsOn=3Dstate if( state ) t.SetInactive() else t.SetDisabled() } } function _IBP() { var t=3Dthis if( t.mIsOn ) { if( t.UserAction !=3D null ) t.UserAction() if( t.ChangeIcon ) { obj=3DGetObj(t.mObjId) if( t.ChangeIcon() ) obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-4)*t.mWidth else obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-0)*t.mWidth } t.SetActive() } =20 } function _IBUI( clr1,clr2,nextState ) { var t=3Dthis SetBorder( GetObj( t.mBorderId ),clr1,clr2 ) obj=3DGetObj( t.mObjId ) obj.style.posLeft=3Dobj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj= .style.posTop t.mCurState=3DnextState return obj } //----------------------------------------- function TxtBtn( oId,oeId,action,chkState ) //----------------------------------------- { var t=3Dthis t.Perform =3D _TBP t.SetActive =3D _TBSetA t.SetInactive=3D _TBSetI t.SetPressed =3D _TBSetP t.SetDisabled=3D _TBSetD t.SetEnabled =3D _TBSetE t.GetState =3D chkState t.UserAction =3D action t.ChgState =3D _TBUI t.mObjId =3D oId t.m_elementsId=3D oeId t.mIsOn =3D 1 } function _TBSetA() { var t=3Dthis if( t.mIsOn && !t.GetState() ) t.ChgState( gHiliteClr,gShadowClr,0,0 ) } function _TBSetI() { var t=3Dthis if( t.mIsOn && !t.GetState() ) t.ChgState( gFaceClr,gFaceClr,0,0 ) } function _TBSetP() { if( this.mIsOn ) this.ChgState( gShadowClr,gHiliteClr,1,1 ) } function _TBSetD() { =20 this.ChgState( gFaceClr,gFaceClr,0,0 ) this.mIsOn =3D 0 } function _TBSetE() { var t=3Dthis if( !t.GetState() ) t.ChgState( gFaceClr,gFaceClr,0,0 ) else t.ChgState( gShadowClr,gHiliteClr,1,1 ) t.mIsOn =3D 1 } function _TBP() { var t=3Dthis if( t.mIsOn ) {=20 if( t.UserAction !=3D null ) t.UserAction() if( !t.GetState ) return if( t.GetState() ) t.SetPressed() else t.SetActive() } =20 } function _TBUI( clr1,clr2,lOffset,tOffset ) { SetBorder( GetObj( this.mObjId ),clr1,clr2 ) Offset( GetObj( this.m_elementsId ),lOffset,tOffset ) } function Offset( obj, top, left ){ obj.style.top=3Dtop; obj.style.left=3Dle= ft } function SetBorder( obj, upperLeft, lowerRight ) { s=3Dobj.style; s.borderStyle =3D "solid" s.borderWidth =3D 1=20 s.borderLeftColor =3D s.borderTopColor =3D upperLeft s.borderBottomColor=3D s.borderRightColor =3D lowerRight } function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] } function BtnOnOver(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetActive() } function BtnOnDown(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetPressed() } function BtnOnOut(){ b=3DGetBtnObj(); if( b !=3D null ) b.SetInactive() } function BtnOnUp() { b=3DGetBtnObj() if( b !=3D null ) b.Perform() else Upd() } function GetNtsState(){ return parent.gNtsOpen } function GetOtlState(){ return parent.gOtlOpen } function GetOtlTxtState(){ return parent.gOtlTxtExp } function NtsBtnSetFlag( fVal ) { s=3Ddocument.all.item( this.m_flagId ).style s.display=3D"none" if( fVal ) s.display=3D"" else s.display=3D"none" } function _BSetA_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etActive() } function _BSetI_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etInactive() } function _BSetP_Border(){ b =3D gBtnArr[this.mObjId]; if( b !=3D null ) b.S= etPressed() } function _BSetA_BorderImg() {=20 b =3D gBtnArr[this.mBorderId]=20 if( b !=3D null && this.mIsOn && !b.GetState() ) { obj=3Dthis.ChgState( gHiliteClr,gShadowClr,2 ) obj.style.posTop=3D0 } } function _BSetI_BorderImg() {=20 b =3D gBtnArr[this.mBorderId] if( b !=3D null && this.mIsOn && !b.GetState() ) { obj=3Dthis.ChgState( gFaceClr,gFaceClr,1 ) obj.style.posTop=3D0 } } var gHiliteClr=3D"THREEDHIGHLIGHT",gShadowClr=3D"THREEDSHADOW",gFaceClr=3D"= THREEDFACE" var gBtnArr =3D new Array() gBtnArr["nb_otl"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPan= e,GetOtlState ) gBtnArr["nb_otlElem"] =3D new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOt= lPane,GetOtlState ) gBtnArr["nb_nts"] =3D new ImgBtn( "nb_nts","nb_ntsBorder",10,parent.ToggleN= tsPane ) gBtnArr["nb_nts"].SetActive =3D _BSetA_BorderImg; gBtnArr["nb_nts"].SetInactive =3D _BSetI_BorderImg; gBtnArr["nb_ntsBorder"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.= ToggleNtsPane,GetNtsState ) gBtnArr["nb_ntsElem"] =3D new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.To= ggleNtsPane,GetNtsState ) gBtnArr["nb_prevBorder"] =3D gBtnArr["nb_prev"]=3D new ImgBtn( "nb_prev","n= b_prevBorder",30,parent.GoToPrevSld ) gBtnArr["nb_nextBorder"] =3D gBtnArr["nb_next"]=3D new ImgBtn( "nb_next","n= b_nextBorder",30,parent.GoToNextSld ) gBtnArr["nb_sldshw"]=3D new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent= .FullScreen ) gBtnArr["nb_sldshwBorder"] =3D new TxtBtn( "nb_sldshw","nb_sldshwBorder",pa= rent.FullScreen,null ) gBtnArr["nb_sldshwBorder"].SetActive =3D _BSetA_Border; gBtnArr["nb_sldshwBorder"].SetInactive =3D _BSetI_Border; gBtnArr["nb_sldshwText"] =3D new TxtBtn( "nb_sldshw","nb_sldshwText",parent= .FullScreen,null ) gBtnArr["nb_sldshwText"].SetActive =3D _BSetA_Border; gBtnArr["nb_sldshwText"].SetInactive =3D _BSetI_Border; gBtnArr["nb_voice"] =3D gBtnArr["nb_voiceBorder"] =3D new ImgBtn( "nb_voice= ","nb_voiceBorder",18,parent.ToggleVNarration ) gBtnArr["nb_otlTxtBorder"] =3D gBtnArr["nb_otlTxt"]=3D new ImgBtn( "nb_otlT= xt","nb_otlTxtBorder",23,parent.ToggleOtlText ) gBtnArr["nb_ntsBorder"].m_flagId=3D "nb_nts" gBtnArr["nb_ntsBorder"].SetFlag =3D NtsBtnSetFlag gBtnArr["nb_otlTxt"].ChangeIcon=3D GetOtlTxtState /********************************************* Context menu implementation _CM() is the function that's hooked up to the oncontextmenu event. Once we're asked to show the menu, we first build it by creating DIVs on-the-fly. Then we position it=20 within the screen area so it doesn't get clipped. Creating the DIVs using createElement() means we don't have to write out any extra HTML into the slide HTML files. **********************************************/ var sNext=3D"Next",sPrev=3D"Previous",sEnd=3D"End Show",sFont=3D"Arial",sAr= row=3D"Arrow",sFreeform=3D"Freeform",sRect=3D"Rectangle",sOval=3D"Oval" function ShowMenu() { BuildMenu(); var doc=3DPPTSld.document.body,x=3DPPTSld.event.clientX+doc.scrollLeft,y= =3DPPTSld.event.clientY+doc.scrollTop m =3D PPTSld.document.all.item("ctxtmenu") m.style.pixelLeft=3Dx if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) ) m.style.pixelLeft=3Dx-m.scrollWidth m.style.pixelTop=3Dy if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) ) m.style.pixelTop=3Dy-m.scrollHeight m.style.display=3D"" } function _CM() { if( !parent.IsFullScrMode() ) return; if(!PPTSld.event.ctrlKey) { ShowMenu() return false } else HideMenu() } function BuildMenu() { if( PPTSld.document.all.item("ctxtmenu") ) return var mObj=3DCreateItem( PPTSld.document.body ) mObj.id=3D"ctxtmenu" mObj.style.visibility=3D"hidden" var s=3DmObj.style s.position=3D"absolute" s.cursor=3D"default" s.width=3D"120px" SetCMBorder(mObj,"menu","black") var iObj=3DCreateItem( mObj ) SetCMBorder( iObj, "threedhighlight","threedshadow" ) iObj.style.padding=3D2 CreateMenuItem( iObj,sNext,M_GoNextSld,M_True ) CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld ) =09 CreateSeparator( iObj ) CreateMenuItem( iObj,sEnd,M_End,M_True ) mObj.style.visibility=3D"visible" } function Cancel() { window.event.cancelBubble=3Dtrue; window.event.returnVa= lue=3Dfalse } function Highlight() { ChangeClr("activecaption","threedhighlight") } function Deselect() { ChangeClr("threedface","menutext") } function Perform() { e=3DPPTSld.event.srcElement if( e.type=3D=3D"menuitem" && e.IsActive() ) e.Action() else PPTSld.event.cancelBubble=3Dtrue } function ChangeClr( bg,clr ) { e=3DPPTSld.event.srcElement if( e.type=3D=3D"menuitem" && e.IsActive() ) { e.style.backgroundColor=3Dbg e.style.color=3Dclr } } function M_HasPrevSld() { return( parent.HasPrevSld() ) } function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() } function M_GoPrevSld() { if( gIsEndShow ) { gIsEndShow=3D0; history.back();= PPTSld.event.cancelBubble=3Dtrue; } else GoToPrevSld() } function M_True() { return true } function M_End() { window.close( self ) } function CreateMenuItem( node,text,action,eval ) { var e=3DCreateItem( node ) e.type=3D"menuitem" e.Action=3Daction e.IsActive=3Deval e.innerHTML=3Dtext if( !e.IsActive() ) e.style.color=3D"threedshadow" e.onclick=3DPerform e.onmouseover=3DHighlight e.onmouseout=3DDeselect s=3De.style; s.fontFamily=3DsFont s.fontSize=3D"9pt" s.paddingLeft=3D2 } function CreateSeparator( node ) { var sObj=3DCreateItem( node ) SetCMBorder(sObj,"menu","menu") var s=3DsObj.style s.borderTopColor=3D"threedshadow" s.borderBottomColor=3D"threedhighlight" s.height=3D1 s.fontSize=3D"0px" } function CreateItem( node ) { var elem=3DPPTSld.document.createElement("DIV") node.insertBefore( elem ) return elem } function SetCMBorder( o,ltClr,rbClr ) { var s=3Do.style s.backgroundColor=3D"menu" s.borderStyle=3D"solid" s.borderWidth=3D1 s.borderColor=3DltClr+" "+rbClr+" "+rbClr+" "+ltClr } ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/fullscreen.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/buttons.gif Content-Transfer-Encoding: base64 Content-Type: image/gif R0lGODlhWAESAPf4AAAAAIAAAACAAICAAAAAgIAAgACAgICAgAQEBISEBASEBISEhAQEhMTExAQE /KTM9Pz8/ERERPz8BAT8/KSkpGRkhMTcxCRkxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAMDAwP8AAAD/AP//AAAA//8A/wD//////yH5BAEAAPgALAAAAABYARIA QAj/APEJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGCEiQKCRo8YDIEHig2DxAD4LKD1avDDhgUuV GUOGbHBR5QGYFBG4fHAB58EKECJEwCfUYAWPFGAygLCRKQIIUKM6WAohKUGgCikcFWh1INWoYKVS 7SrQ41GbIhGYLAuVQVOoC+IyXUuUAkG1HE3KFDhAwkgJc5/qDZmxsOHDiBMrXsy4sePDGyP7lChT 5MULmDPnlDw5YmW6FTNrfgi0aNGEZPEtbfo2bNTUpYeeRph69dPWrqvCNFuBIGG1A59CYPAVQtwF cw0OxWdTIOiBCQAjaAB17fOFII8voGmRc+eOkilm/z9OvTtnjN4hYk1YoT3H2rnBOphPAB9skgq3 2lcaX/5YnJVt9BloAar12UEIRGCZdQghMABI1Tn32IQUVthYexhmqGGGMBHAgIfEhSiiiATAtOGJ GnYI4ogsEldicAYOGNJGZaml3Y0L3NTZUBz1xlB0PUoUI0jlVWRSVN89xBKSGB1YU1TMoRfVBEle hR9HQs1GEHxQ3RZZbveZthxt/LEmXHyp5XWABSCpaRJwbM13gAACPHVccgJFgF+NEhqUAEkQSCfc ddhVhh5dVTaEAEsTUNlkZUWKN9BNGDE6QU8OrSdbllzpxyVTTrU21Uj3scfhp7nNpyoDaTIEJ3P9 If8J2kbLNYegg9JRBwGhFvbq66+ZUiDssMQWK2yHxiZLrInKNotss8l+B5yBrr5p2UIJvortANoC 6+234IbLla/elRtZjeamh5CC3Sb0YLvixivvYkDFGlZqBNh7r4n6goVvv6/ZlCicN+kL71ALTnpQ dCIZp7CihkLA3UQmoWRBogyxtBPGCTnZncVR1rSTo5nuydC/Eo8kUH+lOoTyyvjoCuZu+PjYIKLD rZybtrM1d10C0QXKEVz48GrQkEeWdFJKlbb0UmEeV0SzyC6RvNB646LWIVjUNeC1zAFb+RDKXksM 9r531bwmpQW9+hQDDsx5pqwDRWBXcFES2hc+gEn/wJGdEEWdE6LoWcoxQweaTNmkhydkKaYMYY2Q p1unbLl/pPKbn3v7EZRvrKvqlja2ONvrtoIw9tn2g32/tQBlhtYkU+MNikZ7QYlPDPuMldpOmuJX nVo5VF3HjI+q89mteX5IDd/fVFClma5kiE4f2XUJhlz09gj2NbTDRifkmu7zXjR++RVJ/lPznuvr QH2iD6S+UewP9Dnon6d2NLwN8n90BB6hC68cFMCHoe+ACASP9c4DowUyEF0OPFcDI0ij/VXPaAKC UfhS95AKGoQ7IBRICI1HwhGaUIQoLGEKT6jCFrLwhSuMoQtlCMMZ2rCGOKShDm+4wxzy8Ic+DGIP B4cIRCKGMCAAOy== ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/frame.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" CSE 303 - Autum 2006 - Lecture 16 ------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/outline.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"
 No= tes
Slide Show
Outline
<= /a>= = = = = = = = = = = =
------=_NextPart_01C71D00.425B6580 Content-Location: file:///C:/AF8A9A56/cse303-06au-lecture16_files/filelist.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C71D00.425B6580--