ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

آموزشBlueJ

<!-- /* Font Definitions */ @font-face {font-family:Helvetica; panose-1:2 11 5 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Courier; panose-1:2 7 4 9 2 2 5 2 4 4; mso-font-alt:"Courier New"; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Tms Rmn"; panose-1:2 2 6 3 4 5 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Helv; panose-1:2 11 6 4 2 2 2 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"New York"; panose-1:2 4 5 3 6 5 6 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:System; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"MS Mincho"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-alt:"MS 明朝"; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} @font-face {font-family:Batang; panose-1:2 3 6 0 0 1 1 1 1 1; mso-font-alt:바탕; mso-font-charset:129; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 151388160 16 0 524288 0;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:PMingLiU; panose-1:2 1 6 1 0 1 1 1 1 1; mso-font-alt:新細明體; mso-font-charset:136; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:1 134742016 16 0 1048576 0;} @font-face {font-family:"MS Gothic"; panose-1:2 11 6 9 7 2 5 8 2 4; mso-font-alt:"MS ゴシック"; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} @font-face {font-family:Dotum; panose-1:2 11 6 0 0 1 1 1 1 1; mso-font-alt:돋움; mso-font-charset:129; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 151388160 16 0 524288 0;} @font-face {font-family:SimHei; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:黑体; mso-font-charset:134; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 135135232 16 0 262144 0;} @font-face {font-family:MingLiU; panose-1:2 1 6 9 0 1 1 1 1 1; mso-font-alt:細明體; mso-font-charset:136; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 134742016 16 0 1048576 0;} @font-face {font-family:Mincho; panose-1:2 2 6 9 4 3 5 8 3 5; mso-font-alt:明朝; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} @font-face {font-family:Gulim; panose-1:2 11 6 0 0 1 1 1 1 1; mso-font-alt:굴림; mso-font-charset:129; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 151388160 16 0 524288 0;} @font-face {font-family:Century; panose-1:2 4 6 3 5 7 5 2 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Angsana New"; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65537 0;} @font-face {font-family:"Cordia New"; panose-1:2 11 3 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65537 0;} @font-face {font-family:Mangal; panose-1:0 0 4 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:32768 0 0 0 0 0;} @font-face {font-family:Latha; panose-1:2 0 4 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:1048576 0 0 0 0 0;} @font-face {font-family:Sylfaen; panose-1:1 10 5 2 5 3 6 3 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:67110535 0 0 0 159 0;} @font-face {font-family:Vrinda; panose-1:1 1 6 0 1 1 1 1 1 1; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:65539 0 0 0 1 0;} @font-face {font-family:Raavi; panose-1:2 0 5 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131072 0 0 0 0 0;} @font-face {font-family:Shruti; panose-1:2 0 5 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:262144 0 0 0 0 0;} @font-face {font-family:Sendnya; panose-1:0 0 4 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Gautami; panose-1:2 0 5 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:2097152 0 0 0 0 0;} @font-face {font-family:Tunga; panose-1:0 0 4 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:4194304 0 0 0 0 0;} @font-face {font-family:"Estrangelo Edessa"; panose-1:3 8 6 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:-2147459008 0 128 0 0 0;} @font-face {font-family:"Arial Unicode MS"; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627421319 -2147483648 8 0 66047 0;} @font-face {font-family:TimesNewRoman; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"TimesNewRoman\,Bold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-alt:"Times New Roman"; mso-font-charset:178; mso-generic-font-family:auto; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:8193 0 0 0 64 0;} @font-face {font-family:"Arial\,Bold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Arial\,BoldItalic"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:auto; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Adobe Caslon Pro Bold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Adobe Caslon Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Adobe Garamond Pro Bold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Adobe Garamond Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Arno Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Caption"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Display"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro SmText"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Subhead"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Light Display"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Smbd"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Smbd Caption"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Smbd Display"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Smbd SmText"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arno Pro Smbd Subhead"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Bell Gothic Std Black"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Bell Gothic Std Light"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Bickham Script Pro Regular"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:script; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:7 0 0 0 147 0;} @font-face {font-family:"Bickham Script Pro Semibold"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:script; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:7 0 0 0 147 0;} @font-face {font-family:"Birch Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Blackoak Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Brush Script Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Chaparral Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Charlemagne Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Cooper Std Black"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Eccentric Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Garamond Premr Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Garamond Premr Pro Smbd"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Giddyup Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Hobo Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Kozuka Gothic Pro B"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro B"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Gothic Pro EL"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro EL"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Gothic Pro H"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro H"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Gothic Pro L"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro L"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Gothic Pro M"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro M"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Gothic Pro R"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Gothic Pro R"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro B"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro B"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro EL"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro EL"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro H"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro H"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro L"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro L"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro M"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro M"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Kozuka Mincho Pro R"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"\@Kozuka Mincho Pro R"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:515 134676480 16 0 131077 0;} @font-face {font-family:"Letter Gothic Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Lithos Pro Regular"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Mesquite Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Minion Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Minion Pro Cond"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Minion Pro Med"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Minion Pro SmBd"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Myriad Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Myriad Pro Cond"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Myriad Pro Light"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Nueva Std Cond"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"OCR A Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Orator Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Poplar Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Prestige Elite Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Rosewood Std Regular"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Stencil Std"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:modern; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Tekton Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Tekton Pro Cond"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Tekton Pro Ext"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:"Trajan Pro"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:135 0 0 0 155 0;} @font-face {font-family:Marlett; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Lucida Console"; panose-1:2 11 6 9 4 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482993 6144 0 0 31 0;} @font-face {font-family:"Lucida Sans Unicode"; panose-1:2 11 6 2 3 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-2147476737 14699 0 0 63 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"Arial Black"; panose-1:2 11 10 4 2 1 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Comic Sans MS"; panose-1:3 15 7 2 3 3 2 2 2 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:Impact; panose-1:2 11 8 6 3 9 2 5 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:Georgia; panose-1:2 4 5 2 5 4 5 2 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Franklin Gothic Medium"; panose-1:2 11 6 3 2 1 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Palatino Linotype"; panose-1:2 4 5 2 5 5 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-536870009 1073741843 0 0 415 0;} @font-face {font-family:"Trebuchet MS"; panose-1:2 11 6 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:Webdings; panose-1:5 3 1 2 1 5 9 6 7 3; mso-font-charset:2; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"MV Boli"; panose-1:2 0 5 0 3 2 0 9 0 0; mso-font-charset:1; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 0 256 0 0 0;} @font-face {font-family:AngsanaUPC; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:222; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65536 0;} @font-face {font-family:BrowalliaUPC; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:222; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65536 0;} @font-face {font-family:"Browallia New"; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65537 0;} @font-face {font-family:CordiaUPC; panose-1:2 11 3 4 2 2 2 2 2 4; mso-font-charset:222; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777219 0 0 0 65536 0;} @font-face {font-family:DilleniaUPC; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:222; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:EucrosiaUPC; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:222; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:FreesiaUPC; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:222; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:IrisUPC; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:222; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:JasmineUPC; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:222; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:KodchiangUPC; panose-1:2 2 6 3 5 4 5 2 3 4; mso-font-charset:222; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:LilyUPC; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:222; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:16777217 0 0 0 65536 0;} @font-face {font-family:Aharoni; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:David; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"David Transparent"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:FrankRuehl; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Levenim MT"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:Miriam; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Miriam Transparent"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Miriam Fixed"; panose-1:0 0 0 9 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Fixed Miriam Transparent"; panose-1:0 0 0 9 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:Narkisim; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:Rod; panose-1:0 0 0 9 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Rod Transparent"; panose-1:0 0 0 9 0 0 0 0 0 0; mso-font-charset:177; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:6145 0 0 0 32 0;} @font-face {font-family:"Traditional Arabic"; panose-1:2 1 0 0 0 0 0 0 0 0; mso-font-charset:178; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:24577 0 0 0 64 0;} @font-face {font-family:"Arabic Transparent"; panose-1:2 1 0 0 0 0 0 0 0 0; mso-font-charset:178; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:8193 0 0 0 64 0;} @font-face {font-family:Andalus; panose-1:2 1 0 0 0 0 0 0 0 0; mso-font-charset:178; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:24577 0 0 0 64 0;} @font-face {font-family:"Simplified Arabic"; panose-1:2 1 0 0 0 0 0 0 0 0; mso-font-charset:178; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:8193 0 0 0 64 0;} @font-face {font-family:"Simplified Arabic Fixed"; panose-1:2 1 0 9 0 0 0 0 0 0; mso-font-charset:178; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:8193 0 0 0 64 0;} @font-face {font-family:Kartika; panose-1:2 2 5 3 3 4 4 6 2 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:8388611 0 0 0 1 0;} @font-face {font-family:"\@MS Gothic"; panose-1:2 11 6 9 7 2 5 8 2 4; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} @font-face {font-family:FantasyMatrix; panose-1:0 0 4 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:FantasyMatrixSmall; panose-1:0 0 4 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Jokerman Alts LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"University Roman Alts LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Smudger Alts LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"HolidayPi BT"; panose-1:5 12 1 2 1 2 9 2 2 2; mso-font-charset:2; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"OldDreadfulNo7 BT"; panose-1:4 8 8 5 6 1 7 1 8 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"MisterEarl BT"; panose-1:3 8 8 2 2 3 2 2 2 3; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Calligraph421 BT"; panose-1:3 6 7 2 5 4 2 2 2 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Blackletter686 BT"; panose-1:3 4 8 2 2 6 8 4 8 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Cataneo BT"; panose-1:3 2 8 2 4 5 2 6 8 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Staccato222 BT"; panose-1:3 9 7 2 3 4 7 2 4 3; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"ParkAvenue BT"; panose-1:3 2 6 2 5 5 6 8 7 5; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Square721 BT"; panose-1:2 11 5 4 2 2 2 6 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Broadway BT"; panose-1:4 4 9 5 8 11 2 2 5 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:135 0 0 0 27 0;} @font-face {font-family:"Microsoft Sans Serif"; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627421663 -2147483648 8 0 66047 0;} @font-face {font-family:"Scruff LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Odessa LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Highlight LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"One Stroke Script LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Mekanik LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Tiranti Solid LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Pump Demi Bold LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Quixley LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"La Bamba LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Rage Italic LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Ruach LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Westwood LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Smudger LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Milano LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Victorian LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"University Roman LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Academy Engraved LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Orange LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"John Handy LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Jokerman LET"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:131 0 0 0 9 0;} @font-face {font-family:"Agency FB"; panose-1:2 11 5 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Arial Narrow"; panose-1:2 11 5 6 2 2 2 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Arial Rounded MT Bold"; panose-1:2 15 7 4 3 5 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Blackadder ITC"; panose-1:4 2 5 5 5 16 7 2 13 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Bodoni MT"; panose-1:2 7 6 3 8 6 6 2 2 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Bodoni MT Black"; panose-1:2 7 10 3 8 6 6 2 2 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Bodoni MT Condensed"; panose-1:2 7 6 6 8 6 6 2 2 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Book Antiqua"; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Bookman Old Style"; panose-1:2 5 6 4 5 5 5 2 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Bradley Hand ITC"; panose-1:3 7 4 2 5 3 2 3 2 3; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Calisto MT"; panose-1:2 4 6 3 5 5 5 3 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Castellar; panose-1:2 10 4 2 6 4 6 1 3 1; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Century Gothic"; panose-1:2 11 5 2 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Century Schoolbook"; panose-1:2 4 6 4 5 5 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Copperplate Gothic Bold"; panose-1:2 14 7 5 2 2 6 2 4 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Copperplate Gothic Light"; panose-1:2 14 5 7 2 2 6 2 4 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Curlz MT"; panose-1:4 4 4 4 5 7 2 2 2 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Edwardian Script ITC"; panose-1:3 3 3 2 4 7 7 13 8 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Elephant; panose-1:2 2 9 4 9 5 5 2 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Engravers MT"; panose-1:2 9 7 7 8 5 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Eras Bold ITC"; panose-1:2 11 9 7 3 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Eras Demi ITC"; panose-1:2 11 8 5 3 5 4 2 8 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Eras Light ITC"; panose-1:2 11 4 2 3 5 4 2 8 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Eras Medium ITC"; panose-1:2 11 6 2 3 5 4 2 8 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Felix Titling"; panose-1:4 6 5 5 6 2 2 2 10 4; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Forte; panose-1:3 6 9 2 4 5 2 7 2 3; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Franklin Gothic Book"; panose-1:2 11 5 3 2 1 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Franklin Gothic Demi"; panose-1:2 11 7 3 2 1 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Franklin Gothic Demi Cond"; panose-1:2 11 7 6 3 4 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Franklin Gothic Heavy"; panose-1:2 11 9 3 2 1 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Franklin Gothic Medium Cond"; panose-1:2 11 6 6 3 4 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"French Script MT"; panose-1:3 2 4 2 4 6 7 4 6 5; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Garamond; panose-1:2 2 4 4 3 3 1 1 8 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:Gigi; panose-1:4 4 5 4 6 16 7 2 13 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Gill Sans MT Ext Condensed Bold"; panose-1:2 11 9 2 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Gill Sans MT"; panose-1:2 11 5 2 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Gill Sans MT Condensed"; panose-1:2 11 5 6 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Gill Sans Ultra Bold"; panose-1:2 11 10 2 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Gill Sans Ultra Bold Condensed"; panose-1:2 11 10 6 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Gloucester MT Extra Condensed"; panose-1:2 3 8 8 2 6 1 1 1 1; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Goudy Old Style"; panose-1:2 2 5 2 5 3 5 2 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Goudy Stout"; panose-1:2 2 9 4 7 3 11 2 4 1; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Haettenschweiler; panose-1:2 11 7 6 4 9 2 6 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"Imprint MT Shadow"; panose-1:4 2 6 5 6 3 3 3 2 2; mso-font-charset:0; mso-generic-font-family:decorative; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"MS Outlook"; panose-1:5 1 1 0 1 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Maiandra GD"; panose-1:2 14 5 2 3 3 8 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Monotype Corsiva"; panose-1:3 1 1 1 1 2 1 1 1 1; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"OCR A Extended"; panose-1:2 1 5 9 2 1 2 1 3 3; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Palace Script MT"; panose-1:3 3 3 2 2 6 7 12 11 5; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Papyrus; panose-1:3 7 5 2 6 5 2 3 2 5; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Perpetua; panose-1:2 2 5 2 6 4 1 2 3 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Perpetua Titling MT"; panose-1:2 2 5 2 6 5 5 2 8 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Pristina; panose-1:3 6 4 2 4 4 6 8 2 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Rage Italic"; panose-1:3 7 5 2 4 5 7 7 3 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:Rockwell; panose-1:2 6 6 3 2 2 5 2 4 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Rockwell Condensed"; panose-1:2 6 6 3 5 4 5 2 1 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Rockwell Extra Bold"; panose-1:2 6 9 3 4 5 5 2 4 3; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Script MT Bold"; panose-1:3 4 6 2 4 6 7 8 9 4; mso-font-charset:0; mso-generic-font-family:script; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Tw Cen MT"; panose-1:2 11 6 2 2 1 4 2 6 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Tw Cen MT Condensed"; panose-1:2 11 6 6 2 1 4 2 2 3; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:"Wingdings 2"; panose-1:5 2 1 2 1 5 7 7 7 7; mso-font-charset:2; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Wingdings 3"; panose-1:5 4 1 2 1 8 7 7 7 7; mso-font-charset:2; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Bookshelf Symbol 7"; panose-1:5 1 1 1 1 1 1 1 1 1; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Lucida Sans"; panose-1:2 11 6 2 3 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Lucida Sans Typewriter"; panose-1:2 11 5 9 3 5 4 3 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"MS Reference Sans Serif"; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"MS Reference Specialty"; panose-1:5 0 5 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Tw Cen MT Condensed Extra Bold"; panose-1:2 11 8 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:7 0 0 0 3 0;} @font-face {font-family:ZWAdobeF; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:536885895 0 0 0 511 0;} @font-face {font-family:"Euro Sign"; panose-1:2 11 6 3 2 2 1 2 1 1; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:3 2 0 0 1 0;} @font-face {font-family:"Lucida Bright"; panose-1:2 4 6 3 7 5 5 2 4 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:7 0 0 0 147 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} ins {mso-style-type:export-only; text-decoration:none;} span.msoIns {mso-style-type:export-only; mso-style-name:""; text-decoration:underline; text-underline:single;} span.msoDel {mso-style-type:export-only; mso-style-name:""; text-decoration:line-through; color:aqua;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

١

BlueJ آموزش

Persian Translator: Mehdi shahdoost

Persian Support by: JEIC SOFT (Jafzar Engineering and Investigation Company)

Michael Kölling

Mærsk Institute

University of Southern Denmark

٢

فهرست مطالب صفحه

فصل ا – مقدمه

۵ ............................................................................................................BlueJ ١ ) درباره -١

٢ ) مطالب پوشش داده شده توسط کتاب و خوانندگان ............................................................................ ۵ -١

٣ ) حق تالیف ، لیسانس و توزیع مجدد .............................................................................................. ۵ -١

۴ ) بازتاب و واکنش شما ................................................................................................................ ۵ -١

فصل ٢ – نصب کردن ۶

١ ) نصب در ویندوز ........................................................................................................ ۶ -٢

٢ ) نصب در مکینتاش ..................................................................................................... ٧ -٢

٣) نصب در لینوکس / یونیکس و سیستم های دیگر............................................................... ٧ -٢

۴ ) مشکلات نصب کردن ................................................................................................ ٧ -٢

فصل ٣ – شروع کردن ( ویرایش کردن- کامپایل کردن – اجرایی کردن ) ٨

٨ ......................................................................................................BlueJ ١) شروع -٣

٢) باز کردن پروژه ..................................................................................................... ٩ -٣

٣) ایجاد اشیا ............................................................................................................. ٩ -٣

۴) اجرایی کردن ....................................................................................................... ١١ -٣

۵) ویرایش کلاس ها ................................................................................................... ١٣ -٣

۶) کامپایل کردن ........................................................................................................ ١۴ -٣

٧) راهنمایی با استفاده از خطاهایی کامپایلر .................................................................... ١۵ -٣

فصل ۴ – انجام کارهای بیشتر ١۶

١) بررسی کردن و بازبینی ......................................................................................... ١۶ -۴

٢) ارسال اشیا به عنوان پارامترها .............................................................................. ١٨ -۴

٣

فصل ۵ – ایجاد یک پروژه جدید ٢٠

١) ایجاد پوشه پروژه .............................................................................................. ٢٠ -۵

٢) ایجاد کلاس ها ................................................................................................... ٢٠ -۵

٣) ایجاد وابسته ها .................................................................................................. ٢٠ -۵

٢١ ..........................................................................(elements) ۴ ) جابجا کردن عناصر -۵

فصل ۶ – استفاده از محیط کدنویسی ٢٢

٢٢ ...........................................................................................code pad ١ ) نمایش -۶

٢) ارزیابی عبارات ساده ......................................................................................... ٢٢ -۶

٣) دریافت اشیا .................................................................................................... ٢٣ -۶

۴) بررسی اشیا ................................................................................................... ٢۴ -۶

۵) اجرایی کردن دستورات ...................................................................................... ٢۴ -۶

۶) دستورات چند خطی و توالی دستورات .................................................................. ٢۴ -۶

٧) کار با متغییرها ............................................................................................... ٢۴ -۶

٨) تاریخچه دستورات .......................................................................................... ٢۵ -۶

فصل ٧ – برطرف کردن خطاها ٢۶

ها ............................................................................. ٢۶ Breakpoint ١) تنظیم کردن -٧

٢) عبور مرحله ای از میان کدها .............................................................................. ٢٨ -٧

٣) بررسی متغییرها .............................................................................................. ٢٨ -٧

۴) توقف کردن و تمام کردن ................................................................................... ٢٩ -٧

فصل ٨ – ایجاد برنامه های کاربردی ٣٠

فصل ٩ - ایجاد اپلت ها ٣٢

١) اجرا کردن اپلت ................................................................................................. ٣٢ -٩

٢) ایجاد کردن اپلت ................................................................................................ ٣٣ -٩

۴

٣) تست کردن اپلت ................................................................................................ ٣٣ -٩

فصل ١٠ - اعمال دیگر ٣۴

٣۴ ............................................................BlueJ در BlueJ ١) باز کردن پکیج های غیر -١٠

٢) اضافه کردن کلاس های موجود به پروژه تان .......................................................... ٣۴ -١٠

٣۴ ......................................................................main ٣) فراخوانی متدهای استاتیک و -١٠

٣۵ ........................................................................(Documentation ) ۴) تولید اسناد -١٠

۵) کار با کتابخانه ها .............................................................................................. ٣۵ -١٠

۶) ایجاد اشیا از کلاس های کتابخانه ای ..................................................................... ٣۵ -١٠

فصل ١١ – فقط خلاصه ها ٣۶

Copyright © M. Kölling

۵

مقدمه

BlueJ ١ ) درباره -١

محیط توسعه جاوا میباشد که به طور ویژه BlueJ . میباشد BlueJ این اموزش مقدمه ای برای استفاده از محیط برنامه نویسی

Deakin برای آموزش جاوا در سطوح مقدماتی طراحی شده است. این نرم افزار توسط تیم طراحی و پیاده ساز در دانشگاه

شهر کانتربری انگلستان ایجاد شده است. (Kent ) شهر ملبورن استرالیا و همچنین دانشگاه کنت

برای بدست آوردن اطلاعات بیشتر به وب سایت این نرم افزار به آدرس زیر مراجعه نمایید :

Http://www.bluej.org

٢) مطالب پوشش داده شده و خوانندگان کتاب -١

این آموزش برای تعلیم دادن جاوا نمی باشد و در اصل محیطی برای اموزش جاوا می باشد.

٣ ) حق تالیف ، لیسانس و توزیع مجدد -١

برای استفاده های شخصی و غیر تجاری بصورت رایگان (as-is) و همچنین این آموزش همانگونه که هستند BlueJ نرم افزار

در اختیار قرار دارد. BlueJ ارائه می شوند. حق تالیف

۴) بازتاب و واکنش شما -١

باعث خوشحالی و تشویق ما BlueJ نظرات ، سوالات ، اصلاحات و انتقادات شما در خصوص نرم افزار و یا اموزش

به آدرس زیر : ( Michael Kolling) خواهد شد. لطفا میل کنید به مایکل کولینگ

mik@mip.sdu.dk

۵) سخن مترجم -١

می باشد.که در سایت رسمی این نرم افزار موجود BlueJ آموزشی که هماکنون در اختیار دارید ترجمه متن انگلیسی آموزش

است. البته این متن ترجمه لغت به لغت آموزش انگلیسی نرم افزار نیست بلکه برداشتی آزاد از آن متن است که کوشش شده

تمام متن اصلی را پوشش دهد. امیدوارم که این اثر که از طرف شرکت تحقیقاتی و مهندسی جی افزار پشتیبانی می شود مقبول

شما برنامه نویسان و توسعه دهندگان ایرانی قرار بگیرد. در صورتی که شما دوستان عزیز کاستی در این اثر دیدید لطفاً

برای برطرف کردن آن در نسخه های بعدی این آموزش آنرا با استفاده از ایمیل زیر به بنده اطلاع دهید.

Persianshadow2003@yahoo.com

۶

فصل دوم - نصب کردن

در سه فرمت توزیع شده است: یکی برای سیستم عامل ویندوز ، یکی برای سیستم عامل مکینتاش و یک نسخه هم BlueJ

برای دیگر سیستم ها . مراحل نصب این نرم افزار کاملا سر راست و مشخص می باشد.

پیش نیازها :

یا نسخه های بالاتر را نصب داشته باشید. ما توصیه می کنیم که از نسخه های J2SE باید 1.4 BlueJ شما برای استفاده از

را ندارید. می توانید از طریق وب سایت شرکت سان آنرا بصورت (JDK) جاوا استفاده کنید. اگر شما جاوا (Beta ) غیر بتا

رایگان دریافت کنید. :

http://java.sun.com/j2se

آخرین نسخه جاوا بصورت پیش فرض نصب میباشد. و شما نیاز به نصب مجدد جاوا توسط MacOS X در سیستم عامل

را دانلود SDK برخورد کردید. شما باید SDK و یا JRE خودتان ندارید. در ضمن اگر در صفحه دانلود شما با دو پیشنهاد

کافی نمی باشد. JRE کنید. و

١ ) نصب برای ویندوز -٢

شماره نسخه xxx که کلمات . bluejsetup-xxx.exe : فایل توزیع شده برای سیستم عامل ویندوز با این نام می باشد

نسخه 2.0.0 بدین صورت BlueJ را مشخص می کند. به عنوان مثال فایل نصب کننده BlueJ

. bluejsetup-200.exe : میباشد

دریافت کنید. با استفاده از این BlueJ شما این فایل رو می توانید از طریق یک دیسک دریافت کرده و یا اینکه از وب سایت

در آن نصب شود مشخص کنید. همچنین این BlueJ . شما می توانید. پوشه ای را که قصد دارید ( installer) نصب کننده

در منوی شروع و دسکتاپ به شما ارائه می دهد. (shortcut) نصب کننده گزینه های برای نصب میانبر

نصب شده پیدا کنید. BlueJ را در پوشه ای که BlueJ.exe بعد از اینکه نصب تمام شد. شما می توانید برنامه

جستجو (JDK) کامپیوتر شما را برای پیدا کردن جاوا BlueJ . را اجرا کنید BlueJ اولین باری که شما برنامه

را روی سیستم شما پیدا کرد. ( JDK و 1.5 JDK می نماید. و اگر چند ورژن مناسب از جاوا ( به عنوان مثال 1.4

پنجره ای را باز می کند که شما می توانید یکی از آن نسخه های جاوا را انتخاب کنید.

را روی سیستم شما پیدا کند. مسیر آنرا از شما سوال خواهد کرد. ( دلیل این امر JDK . نتوانست BlueJ در ضمن اگر

ویندوز پاک شده باشد. Registry روی سیستم شما نصب شده باشد. ولی مقدار مورد نیاز از JDK می تواند این باشد که

را نصب می کند. و شما با استفاده از این برنامه می توانید نسخه vmselect.exe همچنین برنامه BlueJ نصب کننده

از آن استفاده می کند را تغییر دهید. BlueJ جاوایی که

٧

٢) نصب برای مکینتاش -٢

اجرا می شود. MacOS X تنها در BlueJ لطفاً توجه داشته باشید که

ها شماره نسخه نرم افزار را مشخص xxx ، نامیده می شوند blueJ-xxx.zip فایل های توزیع شده برای مکینتاش به شکل

میباشد.شما این فایل را BlueJ-200.zip فایل های توزیع شده اش بصورت ، blueJ می کنند.برای مثال نسخه 2.0.0

به آدرس زیر دانلود نمایید: BlueJ می توانید در یک دیسکت دریافت کرده و یا از وب سایت

http://www.bluej.org

بعد از دانلود فایل بصورت خودکار فایل را از حالت زیپ شده خارج می کند. واگر این کار صورت MacOS سیستم عامل

نگرفت.بر روی فایل دوبار کلیک کنید تا فایل از حالت زیپ خارج شود.

خواهید داشت. این پوشه را به پوشه BlueJ-xxx بعد از این که فایل از حالت فشرده خارج شد.شما پوشه ای با نام

برنامه های کاربردی تان منتقل نمایید( یا هر پوشه ای که تمایل دارید در آن نگه دارید).شما نیازی به نصب ندارید.

٣) نصب کردن برای لینوکس ، یونیکس و سیستم های دیگر -٢

خوانده می شود. که BlueJ-xxx.jar اجرایی می باشد. این فایل Jar فایل های عمومی توزیع شده برای اینکار یک فایل

BlueJ-200.jar با نام BlueJ شماره نسخه نرم افزار میباشد.به عنوان مثال فایل های توزیع شده 2.0.0 xxx در آن

به آدرس زیر دریافت نمایید: BlueJ مشخص می باشد. شما می توانید این فایل را در یک دیسکت و یا از طریق وب سایت

http://www.bluej.org

BlueJ-200.jar برنامه نصب کننده را با اجرای دستور زیر فراخوانی کنید. توجه: ما برای این مثال از فایل توزیع شده

استفاده کرده ایم –شما نیاز دارید تا از نام فایلی که در یافت کرده اید استفاده کنید.

< j2se-path>/bin/java -jar bluej-200.jar

نصب میباشد. پنجره ای باز می شود که به شما اجازه می دهد J2se مسیر پوشه ای میباشد که در آن < j2se-path>

می خواهید از آن استفاده کنید تعیین نمایید. دکمه BlueJ تا محل نصب برنامه و همچنین نسخه جاوای که برای اجرایی

بر روی سیستم شما نصب شده است. BlueJ ، را فشار دهید. بعد از اتمام Install

۴) اشکالات در نصب برنامه -٢

مراجعه کنید : BlueJ سایت FAQ اگر شما با مشکلی برخورد کردید. می توانید به بخش

http://www.bluej.org/help/faq.html

و یا اینکه بخش " پرسش برای کمک " را مطالعه نمایید:

http://www.bluej.org/help/ask-help.html

٨

فصل سوم - شروع کردن – ویرایش کردن – کامپایل کردن – اجرایی کردن

BlueJ ١ ) آغاز به کار با -٣

نصب شده . برای شروع شما باید این برنامه را اجرا کنید. BlueJ در سیستم عامل ویندوز و مکینتاش برنامه با نام

را نصب کرده که شما برای اجرای محیط گرافیکی BlueJ در سیستم های یونیکس برنامه نصب کننده اسکریپتی با نام

را با آرگومان و یا بدون آرگومان BlueJ روی این فایل دو بار کلیک کنید. در ضمن با استفاده از خط فرمان هم می توانید

فراخوانی کنید:

$ BlueJ

و با آرگومان :

$ BlueJ examples/people

باز شود هست. BlueJ منظور از ارگومان هم پروژه ای است که قصد دارید با

( BlueJ ( عکس ١ : پنجره اصلی برنامه

٩

٢ ) باز کردن پروژه -٣

را انتخاب نمایید. Open گزینه Project به طور خلاصه برای باز کردن پروژه از منوی

مانند پکیج های استاندارد جاوا از پوشه های که شامل فایل های پروژه هستند تشکیل شده است . BlueJ پروژه های

پروژه مورد نظر خود را باز کنید. Open و گزینه Project باز شد. با استفاده از منوی BlueJ بعد از اینکه برنامه

examples توزیع شده است که شما این پروژه های نمونه را می توانید در پوشه BlueJ چند پروژه نمونه به همراه

پیدا نمایید.

در پوشه ای example قرار دارد.باز کنید. پوشه example را که در پوشه People برای این بخش اموزش شما پروژه

نصب شده قرار دارد. بعد از اینکه شما پروژه را باز کردید. پنجره شما شبیه عکس ١ می شود. البته بر اساس BlueJ که

سیستم شما اختلافاتی وجود خواهد داشت.

٣) ایجاد اشیا -٣

خلاصه: برای ایجاد یک شی ، سازنده مربوطه را از منوی بازشونده کلاس انتخاب نمایید.

این است که شما می توانید بدون این که کل پروژه را اجرا نمایید. با یک شی از هر کلاس BlueJ یکی از اعمال پایه و ابتدایی در

معمولا با ایجاد یک شی و فراخوانی یکی از BlueJ در ارتباط بوده و متدهای عمومی انرا اجرا نمایید. مرحله اجرا کردن در

متدهای شی انجام می شود. این مورد در طول توسعه یک برنامه می تواند خیلی مفید باشد. شما می توانید کلاس های را که

می نویسید. به طور مجزا آزمایش کنید و نیازی به نوشتن کامل برنامه از ابتدا ندارد.

میباشد. main متد ، static می توانند بدون ایجاد شی از ابتدا اجرا شوند. نمونه ای از این متدهای Static نکته : متدهای

بنابراین ما می توانیم همچین کاری را انجام دهیم.همانگونه که در برنامه های کاربردی جاوا اتفاق می افتد. برای اجرا یک

را اجرا نماییم. main ، static برنامه کاربردی ، تنها کافیست تا متد

ما بعدا به این موضوع بر خواهیم گشت. ابتدا ما قصد داریم تا کارهای جالبی را انجام دهیم که به صورت عادی در جاوا

نمی توان انجام داد.

آیکون های هستند که (Database,person,staff,student ) مربع های که شما در وسط پنجره اصلی برنامه می بینید

بر ( Ctrl-click : کلاس های موجود در این پروژه را نمایش می دهند. شما می توانید با کلیک راست کردن ( در مکینتاش

( روی این آیکون ها منوی از عملیات موجود برای ان کلاس را بدست آورید. ( شکل ٢

١٠

به همراه سازنده های تعریف شده برای کلاس و همچنین دیگر اعمالی که new این اعمال نمایش داده شده شامل دستور

فراهم امده است. BlueJ توسط محیط

شکل ٢ : اعمال مربوط به کلاس ( منوی بازشونده کلاس )

کلیک راست کرده. ( همانند منوی Staff یک شی ایجاد نماییم. بنابراین بر روی آیکون Staff ما قصد داریم تا از کلاس

می باشد. یکی با پارامتر و یکی بدون Staff بازشونده شکل ٢). منوی نمایش داده شده شامل دو سازنده برای ساختن شی

پارامتر. ما در ابتدا سازنده بدون پارامتر را انتخاب می نماییم. پنجره نشان داده شده در شکل ٣ نمایش داده می شود.

١١

شکل ٣ : سازنده شی بدون پارامتر

موافقت می نماییم. (staff این پنجره نام شی زا که قصد دارید ایجاد کنید می پرسد.ما دراین زمان با نام پیش فرض ( 1

ایجاد می شود. Staff را فشار دهید.حالا شی از کلاس Ok این نام برای حالا مناسب می باشد. شما تنها کافیست دکمه

.( قرار می گیرد (شکل ۴ object bench هنگامی که شما شی را ایجاد کردید.شی در قسمت

object bench شکل ۴: شی قرار گرفته در قسمت

پس روش ایجاد شی : از منوی بازشونده کلاس سازنده را انتخاب کرده ، آنرا اجرا کنید. حالا شما یک شی در قسمت

علامت گذاری شده <<abstract>> با نشان Person خواهید داشت. شما باید دقت کنید که کلاس Object bench

نمی توانید یک شی ایجاد کنید abstract هست ) شما باید دقت کنید که شما از یک کلاس abstract ( یعنی کلاس

( همانگونه که در جاوا تعریف شده است )

۴) اجرا کردن -٣

خلاصه : برای ایجاد یک شی ، از منوی بازشونده شی متد مربوطه را انتخاب نمایید.

حالا که شما یک شی ایجاد کردید. شما می توانید عملیات عمومی را روی آن اجرا نمایید. روی آیکون شی کلیک راست کرده

تا منوی بازشونده شی نمایش داده شود(شکل ۵). منوی بازشونده متدهای موجود برای این شی را به همراه دو عملی که توسط

را نمایش می دهد. ما بعدا آنها را توضیح خواهیم داد .ابتدا اجازه (Inspect and Remove) توسعه یافته اند BlueJ محیط

دهید تا بر روی متدها تمرکز نماییم.

١٢

شکل ۵ : منوی شی

را مشاهده می نمایید.که هر کدام تنظیم می کند و بر می گردانند شماره getRoom و setRoom شما در آنجا متدهای

را فراخوانی نمایید. برای این کار از منوی بازشونده شی متد getRoom را. سعی کنید تا متد staff خانه مربوط به

( را انتخاب کنید تا اجرا شود. پنجره ای نمایش داده می شود که نتیجه این فراخوانی را به شما نمایش می دهد. (شکل ۶

این شخص room می باشد. زیرا ما یک نام خاص برای "unknown room" در این مورد ؛ نام برگشت داده شده

در نظر نگرفته ایم.

شکل ۶: نمایش نتیجه تابع

متدهای که از کلاس های دیر ارث برده اند در زیر منو موجود می باشند. در بالای منوی بازشونده شی دو زیر

. Person ارث برده اتد. و یکی برای متدهای که از کلاس Object منو موجود میباشد. یکی برای متدهای است که ازکلاس

را با انتخاب انها از زیر منو فراخوانی نمایید. این کار را انجام دهید. (getName : مانند ) Person شما میتوانید متدهای کلاس

میباشد. "unknown name" اگر توجه کنید خواهید دید که جواب تولید شده نام مشخص می باشد یعنی پاسخ برابر با

دلیل آن هم این است که ما به اشخاص مان نامی نداده ایم .

یک شماره تعیین کنیم. این کار به ما نشان می دهد که چگونه می توانیم (room) حالا به ما اجازه بدهید تا برای یک اتاق

١٣

فقط یک مقدار را بر می گرداند. اما پارامتر getName و getRoom یک فراخوانی با پارامتر داشته باشیم. ( فراخوانی

را با انتخاب آن از منو فراخوانی نمایید. پنجره ای باز می شود که به شما اجازه می دهد setRoom پارامتر پذیر نیست ) تابع

( تا پارامتر را وارد نمایید ( شکل ٧

شکل ٧ : پنجره فراخوانی تابع با پارامتر

در بالای پنجره ای که نمایش داده می شود. رابط متد فراخوانی شده نمایش داده می شود.(شامل کامنت و امضا متد )

در زیر این قسمت محل ورود متن می باشد که شما با استفاده از ان می توانید پارامتر مربوطه را وارد نمایید.

امضا متد که در قسمت بالای پنجره قرار دارد. به ما می گوید که شما یک پارامتر از نوع رشته دارید.

را فشار دهید. Ok یک اتاق جدید از نوع رشته ( شامل کوتیشن ها ) در محل ورود متن وارد نماید و دکمه

این متد مقدار بازگشتی ندارد و در نتیجه پنجره ای به عنوان نتیجه باز نخواهد شد.بلکه برای این که شما تغییرات

را فراخوانی نمایید. getRoom را ببینید باید یکبار دیگر متد

سعی کنید اشیای را ایجاد کنید و متدهای انها را فراخوانی نمایید. سعی کنید که سازنده را با آرگومان هایش فراخوانی

نمایید. همچنین متدهای مربوط به انها را فراخوانی نمایید تا با انجام ایم کارها با این اعمال آشنایی بیشتری پیدا نمایید.

۵) ویرایش کلاس -٣

خلاصه : برای ویرایش کد کلاس ، بر روی آیکون کلاس دو بار کلیک نمایید.

تا اینجا ، ما فقط با رابط اشیا سرو کار داشتیم. اما حالا وقت اونه که نگاهی به بخش داخلی برنامه داشته باشیم.

از توابع کلاس ببینید. Open Editor شما می توانید پیاده سازی یک کلاس را با انتخاب

( یاد آوری: با کلیک راست کردن بر روی آیکون کلاس می توانید توابع و اعمال مربوط به کلاس را مشاهده نماید)

با دوبار کلیک کردن بر روی آیکون کلاس شما به طور میان بر به توابع مشابهی دسترسی خواهید یافت. جزئیات مربوط

به استفاده از ادیتور در این آموزش به شرح داده نشده ولی استفاده از ان بسیار سر راست می باشد. جزئیات ادیتور به طور

را باز نمایید. پیاده سازی مربوط به Staff مشخص بعدا توضیح داده خواهد شد. برای حالا ، پیاده سازی مربوط به کلاس

را پیدا نمایید. این متد شماره اتاق اعضا عضو را بر می گرداند. به ما اجازه دهید تا با اضافه کردن پیشوند getRoom متد

بر می "M. را به جای مقدار " 3.18 "room M. به متد نتیجه نهایی تابع را تغییر دهیم (بنابراین متد مقدار " 3.18 "room"

١۴

گرداند). ما اینکار را با تغییر این خط برنامه انجام خواهیم داد :

Return room;

و تغییر ان به :

Return "room"+room;

بطور کامل ، دستورات جاوا را پشتیبانی می کند.در نتیجه در این جا چیز خاصی برای نحوه پیاده سازی کلاس BlueJ برنامه

نیست. و همه چیز بر اساس قواعد جاوا انجام می پذیرد.

۶) کامپایل کردن -٣

Compile در ویرایش گر را فشار دهید. و برای کامپایل یک پروژه دکمه Compile خلاصه: برای کامپایل یک کلاس، دکمه

واقع در پنجره پروژه را فشار دهید.

بعد از اینکه شما متن را وارد کردید (و قبل از این که کار دیگری انجام دهید) .نمای پروژه تان را بررسی نمایید ( پنجره اصلی)

تغییر کرده است. و آیکون کلاس شامل خطوط راه راهی شده است. Staff شما اگر دقت کنید خواهید دید که آیکون کلاس

این خطوط را ه راه نشان می دهند که کلاس بعد از آخرین تغییرات کامپایل نشده است.

توجه : شاید شما تعجب کنید که چرا برای اولین بار که این پروژه را باز کردید آیکون های کلاس خط دار نبودن .این

بصورت کامپایل شده توزیع شده اند. البته اکثر پروژه people موضوع به این دلیل می باشد که کلاس های پروژه

بصورت کامپایل نشده توزیع می شوند. بنابراین از این به بعد، به آیکون کلاس های پروژه های که باز BlueJ های

می کنید دقت نمایید.

در منوی ابزار واقع در بالای ویرایشگر چندین دکمه قرار دارند که ما از آنها مرتبا استفاده می کنیم. یکی از این دکمه ها

می باشد. این تابع به شما اجازه می دهد تا کلاس تان را مستقیما از درون ویرایشگر کامپایل نمایید. Compile دکمه

در " the class has been compiled" را فشار دهید. اگر شما اشتباهی مرتکب نشده باشید .پیغام Compile حالا دکمه

بخش اطلاعات واقع در انتهای ویرایشگر به نمایش در می آید. اگر شما خطایی انجام دهید که منجر به تولید یک خطای نحوی

شود. خط کدی که خطا در آن اتفاق افتاده مشخص () می شود و همچنین پیغام خطایی در بخش اطلاعات برنامه به نمایش

در می آید. ( در مورد اولی که کامپایل کردید.سعی کنید یک خطای نحوی ایجاد کنید به عنوان مثال یک سیمی کلون را حذف

کنید. حالا آنرا مجددا کامپایل نمایید تا ببینید چه اتفاقی می افتد. ) بعد از این که کلاس را با موفقیت کامپایل نمودید.

ویرایشگر را ببندید.

١۵

توجه : شما نیاز به ذخیره کد کلاس ندارید کدها در زمان های مورد نیاز یه صورت خودکار ذخیره می شوند. ( مانند هنگامی

که ویرایشگر را می بندید و یا قبل از این که کلاس را کامپایل نمایید. شما اگر دوست دارید می توانید کدها را ذخیره کنید

( تابع مورد نیاز در ویرایشگر مربوط به کلاس وجود دارد ) البته شما در حالتی به این کار نیاز دارید که کامپیوتر تان به صورت

می کند. و شما نگرانید که کارتان از بین برود. (crash) مکرر کرش

می باشد. با فشردن این دکمه کل پروژه کامپایل می شود. ( این دکمه Compile منوی ابزار پنجره پروژه نیز شامل دکمه

تشخیص می دهد که کدامیک از کلاس ها نیاز به کامپایل مجدد دارند. و سپس بعد از کامپایل مجدد انها را مرتب می کند ) .این

کار را با ایجاد تغییر در دو یا چند کلاس (بنابراین شما باید دو یا چند کلاس در صفحه ترسیم کلاس ها داشته باشید که

را فشار دهید. اگر در حین کامپایل خطایی در یکی از Compile با خطوط راه راه مشخص شده باشد )امتحان کنید وسپس دکمه

کلاس ها تشخیص داده شود. ویرایشگر باز شده و محل خطا و همچنین پیغام مناسب را نمایش می دهد. شما اگر دقت کنید خواهید

مجددا خالی می شود. هنگامی که در پیاده سازی تغییر ایجاد شود اشیا پاک می شوند. چ (object bench) دید که محل اشیا

٧) راهنمایی بوسیله خطاهای کامپایلر -٣

خلاصه : برای راهنمایی گرفتن درباره پیغام خطایی کامپایلر ، بر روی علامت سوال که بعد از پیغام خطا قرار دارد کلیک کنید.

اغلب اوقات ، دانشجویان مبتدی به سختی متوجه پیغام های خطا می شوند. ما تلاش کردیم تا یک راهنما نیز ایجاد نماییم.

ویرایشگر را مجددا باز کنید و در ان یک خطا ایجاد کرده و کلاس را دوباره کامپایل نمایید .در بخش اطلاعات ویرایشگر باید

پیغام خطا نمایش داده شود. در انتهای سمت راست بخش اطلاعات علامت سوال مشخص می باشد که شما با کلیک کردن بر روی

( آن می توانید اطلاعات بیشتری درباره ان خطا بدست آورید.( عکس شماره ٨

عکس ٨ : خطای کامپایلر و دکمه راهنما

در این مرحله ، متن های راهنما برای تمام پیغام های خطا موجود نمی باشد. مقداری از متن های راهنما هنوز در حال

نوشته شدن می باشند .اما این خاصیت ارزش امتحان کردن را دارد.تعداد زیادی از خطا ها توضیح داده شده اند. موارد

به آن اضافه خواهند شد. BlueJ باقی مانده نیز نگاشته شده و در ویرایش های بعدی

١۶

فصل ۴- انجام اعمالی بیشتر

انجام دهید. بحث خواهیم کرد این موارد BlueJ در این فصل ما بیشتر بر روی کارهای که شما می توانید توسط محیط

پایه ای نیستند ولی به طور فراوان مورد استفاده قرار می گیرند.

١) ناظر -۴

خلاصه: ناظر شی به شما اجازه می دهد تا به رفع خطاهای ساده بپردازید با نشان دادن وضعیت داخلی شی.

برای اشیای که شامل متدهای تعریف Inspect هنگامی که شما متدهای یک شی را اجرا می کنید .شما می بینید که تابع

شده توسط کاربر هستند موجود است(شکل ۵). این تابع به شما اجازه می دهد تا وضعیت متغیرهای ( فیلدها ) شی را بررسی

با سازنده های که پارامتر Staff نمایید .یک شی با چند مقدار تعریفی توسط کاربر ایجاد نمایید ( به عنوان مثال شی

را از منوی شی انتخاب نمایید. پنجره ای نمایش داده می شود که فیلد های شی را Inspect می پذیرند) .سپس تابع

.( با نوع و مقدار شان نمایش می دهد (شکل ٩

شکل ٩: پنجره ناظر

ناظر برای بررسی سریع اعمالی که تغییر می کنند بسیار مفید می باشد( اعمالی که موقعیت اشیا در ان تغییر می نماید)

بنابراین ، ناظر یک ابزار رفع خطا ساده می باشد.

همه فیلد ها از نوع ساده می باشند ( غیر شی یا رشته ها ) . مقدار این انواع می تواند مستقیما نمایش ، Staff در مثال

داده شود. شما می توانید فورا ببینید که کدام سازنده شامل متغیر نهایی می باشد.

در بسیاری از نمونه ای پیچیده ، مقادیر فیلد ها می تواند به اشیا که توسط کاربران تعریف کرده اند مراجعه کند. برای مشاهده

BlueJ را باز کنید.این پروژه همراه توزیع استاندارد people چنین حالتی ما باید از یک پروژه دیگر استفاده کنیم. پروژه 2

نمای پنجره پروژه شبیه شکل ١٠ خواهد شد. people موجود میباشد. بعد از باز کردن پروژه 2

به کلاس های مثال قبلی اضافه شده است. یکی از فیلدهای کلاس Address در مثال دوم شما می توانید ببینید که کلاس

می باشد. Address از نوع تعریف کاربر کلاس Person

١٧

people شکل ١٠ : پنجره پروژه 2

ایجاد کنید و سپس متد Staff کار بعدی که قرار است کا انجام دهیم . ناظر با فیلدهای نوع شی می باشد. یک شی

پیدا نمایید ). person این شی را فراخوانی نمایید ( شما این متد را می توانید در زیر منوی setAddress()

address را ایجاد می کند.و آنرا در فیلد Address شی کلاس Staff آدرس را وارد نمایید. به طور داخلی ، کد

را فراخوانی نماید. شکل شماره ١١ نتیجه را به ما نشان می دهد. Staff ذخیره می نماید. حالا ، ناظر شی

می باشند. شما همچنین می توانید ببینید که مقدار این فیلد با یک address شامل Staff حالا فیلدهای درون شی

پیکان نمایش داده شده که این بدین معنی است که مقدار ان به یک شی دیگر مراجعه می نماید. خب تا اینجا این موضوع

پیچیده می باشد. زیرا مقدار شی های تعریفی توسط کاربر را نمی توان مستقیما در این لیست مشاهده کرد.

مربوط به Inspect را در لیست انتخاب کرده و دکمه Address فیلد ، address برای امتحان کردن مقادیر مربوط به

دو بار کلیک کنید ) پنجره ناظر دیگری باز شده و address پنجره را فشار دهید ( شما همچنین می توانید بر روی فیلد

.( را نمایش می دهد ( شکل ١٢ Address جزئیات شی

١٨

شکل ١١ : ناظر با مراجعه به شی

شکل ١٢ : ناظر شی داخلی

می توانید ، شما می توانید فیلد Inspect میباشد شما به جای فشار دادن دکمه public اگر فیلد انتخاب شده از نوع

مشخص object bench را فشار دهید. با این عمل شی انتخاب شده در Get را انتخاب نمایید و دکمه Address

می شود.شما در انجا می توانید با فراخوانی متدهای شی به آزمایش خود ادامه دهید.

٢) ارسال اشیا به عنوان پارامتر -۴

خلاصه: یک شی را می توان به عنوان پارامتر برای فراخوانی یک متد ارسال کرد .برای اینکار بر روی آیکون شی کلیک کنید.

١٩

اشیا می توانند به عنوان پارامترها به متدهای پروژه های دیگر ارسال شوند. اجازه دهید تا با یک مثال این کار را انجام دهیم

شامل یک سازنده می باشد که پارامتری Database ایجاد نمایید ( شما باید توجه نمایید که کلاس Database یک شی از کلاس

قادر است تا لیستی از اشخاص را در خود نگه دارد. Database را دریافت نمی کند بنابراین ساخت شی سر راست میباشد ) شی

این شی شامل اعمالی برای اضافه کردن اشیا شخص و همچنین نمایش شخص های که تا کنون ذخیره شده اند می باشد.

را در Student و یا Staff یک اغراق کوچک می باشد !!! ) اگر شما در حال حاضر شی Database ( در حقیقت نام

و شی Database ندارید. یکی از این دو شی را ایجاد نمایید. برای ادامه شما نیاز دارید تا شی Object bench

Database را از شی addPerson قرار داشته باشند.حالا متد object bench در یک زمان در Student و یا Staff

از نوع Person مورد انتظار می باشد. ( یاد آوری: کلاس Person فراخوانی نمایید امضا متد به شما می گوید که پارامتر نوع

باشند نیست .اما یکی از person می باشد بنابراین انجا اشیایی که مستقیما از نوع (abstract) انتزاعی

باشد. بنابراین این قانونی است که ما Person می تواند جایگزین مناسبی برای شی Student و یا Staff زیر انواع شی

مورد انتظار می باشد ).برای ارسال شی Person را به عنوان پارامتر ارسال کنیم هر جا که Student و یا Staff اشیا

کلیک کرده و از پنجره باز شده نام کلاس مورد نظر را در فیلدهای object bench به عنوان پارامتر بر روی شی موجود در

را فشار دهید تا فراخوانی مربوطه انجام پذیرد.از آنجایی که این متد مقدار بازگشتی ندارد ما Ok مربوطه وارد می نماییم. دکمه

فراخوانی نمایید تا بررسی کنید که Database را از شی listAll نمی توانیم فورا نتیجه را مشاهده نماییم. شما می توانید متد

اطلاعات شخص را در خروجی استاندارد چاپ می کند شما باید توجه کنید listAll این عمل برای شی انجام شده است.دستور

که صفحه متن () به طور خودکار باز شده و متن را نمایش می دهد.

تمرین نمایید. Database این کار را با وارد کردن اشخاص بیشتری در

٢٠

فصل ۵- ایجاد پروژه جدید

این فصل به شما یک آموزش سریع برای تنظیم یک پروژه جدید می دهد.

١) ایجاد پروژه جدید -۵

را انتخاب نمایید. New…. گزینه Project خلاصه: برای ایجاد یک پروژه از منوی

را انتخاب نمایید. پنجره انتخاب فایل باز شده و به شما اجازه New…. گزینه Project برای ایجاد یک پروژه جدید از منوی

می دهد تا نام و محل ذخیره سازی پروژه جدید را مشخص نمایید.این کار را حالا امتحان نمایید.شما می توانید هر گونه نامی

را فشار دادید. در مسیر مورد نظر پوشه ای همنام با نامی که شما Ok برای پروژه تان انتخاب نمایید.بعد از اینکه شما دکمه

انتخاب کرده اید ایجاد می شود. و پنجره اصلی برنامه بصورت خالی نمایش داده می شود.

٢) ایجاد کلاسها -۵

را فشار می دهیم.و برای کلاس یک نام قرار می دهیم. New Class خلاصه: برای ایجاد یک کلاس ، دکمه

واقع در منوی ابزار یک کلاس جدید ایجاد کنید.شما می توانید New Class شما اکنون می توانید با کلیک کردن بر روی دکمه

سوال کنید برای تهیه کردن یک نام برای کلاس- این نام می تواند یک شناسه معتبر جاوا باشد.

standard ، applet ، abstract ، interface : شما همچنین می توانید ۴نوع کلاس را انتخاب نمایید

این انتخاب مشخص می کند که بدنه اولیه کدهای که برایتان تولید می شود چگونه باشد. شما بعدا می توانید نوع کلاس را با

در بین کدها ) . abstract تغییر در کدهای ان ویرایش کنید (به عنوان مثال ، با اضافه کردن کلمه کلیدی

بعد از این که شما کلاس را ایجاد نمودید.کلاس به وسیله یک آیکون در صفحه نمایش ، نمایش داده می شود. اگر کلاس شما از

این موضوع در آیکون کلاس نمایش داده خواهد شد. ( abstract,applet,interface) نوع استاندارد نیست

هنگامی که ویرایشگر را برای کلاس جدید باز می کنید خواهید دید که کدهای اولیه برای این کلاس ایجاد شده است.

این موضوع ، کار شما برای شروع را آسان تر خواهد کرد. کدهای پیش فرض از لحاظ نحوی صحیح می باشد.شما می توانید

آنرا کامپایل نماید ( اما این کلاس ها کاری انجام نمی دهند ) .سعی کنید چند کلاس ایجاد کنید و آنها را کامپایل نمایید.

٣) ایجاد وابستگی ها -۵

خلاصه: برای ایجاد یک پیکان ، بر روی دکمه پیکان کلیک کرده و آنرا بر روی صفحه ترسیم درگ نماید. و یا فقط در

ویرایشگر کد مربوطه را تایپ نماید.

در صفحه ترسیم کلاس ها ، علامت پیکان روابط ما بین کلاس ها را مشخص می نماید.

"uses" بوسیله پیکانی با سر تو خالی (سر بسته) مشخص می شود. روابط ( Implement ، extend ) روابط ارث بری

با یک پیکان نقطه چین با سر باز مشخص می شود.

شما می توانید روابط را مستقیما در صفحه ترسیم و یا بوسیله نوشتن کد در ویرایشگر مشخص نماید. شما اگر وابستگی ها

را بوسیله گرافیکی ایجاد کنید. کدها بصورت خودکار بروز رسانی می شوند و اگر شما وابستگی ها را بوسیله کدها ایجاد کنید.

بخش گرافیکی به صورت خودکار بروز رسانی می شود.

٢١

برای اضافه کردن یک پیکان بصورت گرافیکی ، بر روی دکمه پیکان مقتضی(پیکان سر بسته برای روابط ارث بری و پیکان

کلیک کرده و آنرا از بین دو کلاس مربوطه درگ می نماییم. (uses نقطه جین برای

به کدهای کلاس تان اضافه implement و یا extend با اضافه کردن یک پیکان مربوط به ارث بری کد توضیحی مربوط به

.( interface می شود. ( این بستگی به مقصد دارد که از نوع کلاس باشد و یا

بلافاصله تغییری در کدها ایجاد نمی کند (مگر اینکه مقصد کلاسی در یک پکیج دیگر باشد، در این uses اضافه کردن پیکان

برای کلاسی که uses تولید می شود. اما ما فعلا آنرا در بین مثال هایمان نداریم ).استفاده از پیکان Import نمونه دستور

بین کلاس ها تعریف شده uses مورد استفاده قرار نگرفته در حین کامپایل اخطاری ایجاد می کند مبنی بر این که شما از ارتباط

ولی کلاس مورد استفاده قرار نگرفته است.

اضافه کردن پیکان ها برای ارتباط در حالت متنی بسیار ساده می باشد: شما کافی است که به صورت معمولی کدها را تایپ

نماید.هنگامی که کلاس را ذخیره کنید.صفحه ترسیم بروز رسانی می شود(یادآوری : با بستن ویرایشگر ، کلاس به صورت

خودکار ذخیره می شود ).

۴) حذف کردن عناصر -۵

را انتخاب نماید. remove خلاصه : برای حذف یک کلاس و یا یک پیکان ، از منوی باز شونده گزینه

را انتخاب نماید. شما همچنین remove گزینه ، Edit برای حذف یک کلاس از صفحه ترسیم ، کلاس را انتخاب نماید و از منوی

را انتخاب نمایید. هر دو مورد توضیح داده شده برای کلاس برای یک پیکان remove می توانید از منوی بازشونده کلاس گزینه

نیز کاربرد دارد.

٢٢

code pad فصل ۶ – استفاده از

شما می توانید با سرعت و به سادگی به آزمایش دستورات و عبارات یک تکه کد جاوا BlueJ محیط Code Pad بااستفاده از

بپردازید. بنابراین ، کد پد می تواند برای بررسی دستورات و قواعد زبان جاوا مورد استفاده قرار بگیرد.

١) نمایش کد پد -۶

را فشار دهید. Show Code Pad گزینه View خلاصه : برای نمایش کد پد از منوی

را فشار دهید. Show Code Pad گزینه View کد پد بصورت پیش رض نمایش داده نمی شود.برای دیدن آن از منوی

( خود می باشد ( شکل ١٣ object bench پنجره اصلی حالا شامل کد پد در گوشه سمت راست و بعد از

شکل ١٣ : پتجره اصلی به همراه کد پد

با استفاده از خطوط عمودی و افقی قابل تغییر می باشد. کد پد حالا می تواند Object Bench اندازه پنجره کد پد و همچنین

هر خط اجرا شده و نتیجه ان نمایش Enter برای ورود دستورات و عبارات مورد استفاده قرار بگیرد. ب افشار دادن دکمه

داده می شود.

٢) اجرای یک عبارت ساده -۶

خلاصه : برای اجرای یک عبارت جاوا ؛ تنها کافیست که انرا در کد پد تایپ نمایید.

کد پد می تواند برای اجرا و امتحان کردن عبارات ساده بکار برود. به عنوان مثال ، عبارات زیر را امتحان نمایید:

٢٣

4 + 45

"hello".length()

Math.max(33, 4)

(int) 33.7

javax.swing.JOptionPane.showInputDialog(null, "Name:")

عبارات می توانند به مقدارهای استاندارد جاوا مراجعه کنند و اشیا می توانند به کلاس های موجود در پروژه مراجعه داشته

باشند.کد پد نتایج را نمایش خواهد داد و اگر عبارت شما اشتباه باشد پیام خطایی نشان خواهد داد.

در student قرار دارند نیز استفاده کنید.برای نمونه : یک شی از کلاس object bench شما می توانید از اشیایی که در

هست. student قرار دهید (بااستفاده از منوی بازشونده کلاس که قبلا توضیح داده شد ) .نام شی 1 Object bench

حالا شما در محیط کد پد تایپ نمایید:

student1.getName()

به طور مشابه ، شما می توانید به تمام متدهای در دسترس کلاس های پروژه تان دسترسی پیدا نمایید.

٣) دریافت اشیا -۶

آیکون کوچک شی را به آن محیط درگ کنید. ، object bench خلاصه : برای انتقال اشبا از کد پد به محیط

نتیجه بعضی از عبارات (دستورات) یک شی می باشد. که شامل مقدارهای ساده ای هستند. در این مثال ، نتیجه

یک نوع شی می باشد. که به وسیله آیکونی که در کنار آن ترسیم شده در خط بعد از <object reference> نمایش داده شده

عبارت مشخص می باشد.

شکل ١۴ : نتیجه یک عبارت در کدپد ، یک شی می باشد

اگر نتیجه یک رشته باشد شما مقدار انرا می توانید ببیند. در ضمن باز هم یک ایکون در کنار ان ترسیم شده است

( زیرا رشته ها نیز شی هستند ) .تعدادی از دستوراتی که شما با استفاده از ان ها می توانید شی ایجاد نمایید:

new Student()

"marmelade".substring(3,8)

new java.util.Random()

"hello" + "world"

درگ کنید تا با استفاده از شی نتیجه شده کار را ادامه دهید. Object Bench شما می توانید آیکون کوچک شی را درون

٢۴

( (شکل ١۵

object bench شکل ١۵ : درگ کردن شی درون

۴ ) بررسی اشیا -۶

خلاصه : برای بررسی نتیجه اشیا در کد پد بر روی آیکون کوچک شی دوبار کلیک نمایید.

اگر شما می خواهید یک شی را که به عنوان نتیجه برگشت داده شده را از طریق کد پد بررسی نماید بدون اینکه شی را در

قرار دهید. می توانید بر روی آیکون شی دوبار کلیک کرده تا ناظر شی باز شود. Object bench

۵) اجرا کردن دستورات -۶

خلاصه : دستوراتی که در درون کد پد تایپ می شوند. اجرا می گردند

شما همچنین می توانید از کد پد برای اجرا کردن دستورات استفاده نمایید ( این موضوع برای دستورات جاوای می باشد که

مقداری را بر نمی گرداند ) .این کار را انجام دهید.به عنوان مثال :

System.out.println("Gurkensalat");

System.out.println(new java.util.Random().nextInt(10));

دستوراتی که اجرا می شوند به درستی اجرا می شوند خواه در انتهای انها سیمی کالون باشد با نه.

۶) دستورات چند خطی و دستورات توالی دار -۶

استفاده نمایید. Enter-shift خلاصه : برای دستورات چند خطی در انتهای هر خط از

در انتهای هر خط ایجاد نمایید. Enter-shift شما می توانید توالی از دستورات و یا دستورات چند خطی را با استفاده از

نشانگر موس به ابتدای خط بعدی منتقل می شود بدون این که خط قبلی اجرا شود .در انتهای خط اخر enter-shift با فشردن

را فشار دهید تا کل خط های با هم اجرا شوند. برای نمونه کد زیر را اجرا نمایید: Enter

for (int i=0; i<5; i++) {

System.out.println("number: " + i);

}

٧) کار با متغییرها -۶

٢۵

خلاصه : متغییرهای محلی را می توان در دستورات یک خطی و یا چند خطی مورد استفاده قرار داد. اسامی اشیا موجود

در فیلدهای شی به کار گرفته می شوند. object bench در

متغییرها (محلی و یا شی ) می توانند به صورت محدود در کد پد مورد استفاده قرار بگیرند. شما می توانید متغییرهای محلی

را در کد پد تعریف نمایید- اما این فقط برای بخشی از دستورات توالی چند خطی مناسب می باشد. برای مثال شما می توانید

بلوک دستورات زیر را وارد نمایید و این دستورات درست کار کنند :

int sum;

sum = 0;

for (int i=0; i<100; i++) {

sum += i;

}

System.out.println("The sum is: " + sum);

یک فیلد شی جدید ایجاد نمایید. object bench شما می توانید با درگ کردن شی از کد پد به

(command history) ٨) تاریخچه دستورات -۶

خلاصه: با استفاده از دکمه های بالا و پایین روی صفحه کلید می توانید به تاریخچه ورودی ها در کد پد دست پیدا کنید.

کد پد سابقه ای از ورودی های قبلی شما را نگه داری می کند. شما با استفاده از دکمه های بالا و پایین روی صفحه کلید

می توانید به خط های ورودی قبلی دست پیدا کنید و می توانید قبل از اجرا مجدد آنها به ویرایش آنها بپردازید.

فصل ٧ – رفع خطا

٢۶

. BlueJ این بخش مقدمه ای است بر مهمترین اعمال مربوط به رفع خطا در

در سال اول آموزش می تواند (Debugger) بسیاری از اساتید علوم کامپیوتر معتقدند که استفاده از نرم افزارهای رفع خطا

جالب و مفید باشد. اما فرصتی برای معرفی چنین چیزی را به دانشجویان ندارند. دانشجویان به سختی در تقلای کار کردن با

ویرایشگر ، کامپایلر و اجرا کننده هستند . و فرصتی برای آشنایی با یک ابزار پیچیده دیگر را ندارند.

بر همین اساس ما مصمم شدیم تا یک دیباگر ساده طراحی کنیم. هدف این بود که دیباگر تهیه شود که شما ظرف

١۵ دقیقه کل خصوصیات آن را شرح دهید.و دانشجویان بتوانند بدون اموزش خاصی از ان استفاده نمایند.

حال ببینید که آیا ما موفق بوده ایم.

در ابتدا امر ، ما اعمال دیباگر های قدیمی را به ٣ وظیفه کاهش دادیم :

breakpoint ١. تنظیم

٢. کامپایل خط به خط کدها

٣. نظارت بر متغییرها ( بررسی متغییرها )

در واقع این ٣ عمل بسیار ساده می باشند. در ادامه ما با آنها کار خواهیم کرد.

انتخاب نمایید. این پروژه شامل کلاس های برای examples را از پوشه debug demo برای شروع کار ، پروژه

آزمایش کردن توابع و اعمال دیباگر می باشند. و نمی توانند کار دیگری انجام دهند.

ها : break point ١) تنظیم -٧

ها در سمت چپ محیط کدنویسی break point در محل مربوط به ، break point خلاصه: برای قرار دادن یک

کلیک کنید.

شما می توانید در اجرای برنامه در این نقطه معین از کد وقفه ایجاد کنید. و برنامه در ان break point با تنظیم یک

قسمت متوقف شود. هنگامی که اجرا برنامه متوقف شد . شما می توانید وضعیت اشیا برنامه خود را بررسی کنید. این

_______کار در اغلب اوقات به شما کمک می کند. تا بتوانید بفهمید که در کدهای شما چه اتفاقی می افتد.

ها می باشد. break point همانگونه که در شکل ١۶ مشخص می باشد. سمت چپ محیط کدنویسی محل مربوط به

نقطه " stop" ایجاد نمایید. علامت کوچک break point شما با کلیک کردن در این محیط می توانید یک

شما را مشخص می نماید. می توانید همین حالا امتحان نمایید. Break point

خود را در جایی از متد که شامل حلقه breakpoint را پیدا نماید. و نقطه loop را باز کنید. متد Demo کلاس

در محیط کدنویسی نمایش داده خواهد شد. " stop" می باشد. قرار دهید. علامت For

٢٧

break point شکل ١۶ : یک نقطه

مشخص کردید. اجرا برنامه در ان قسمت ها متوقف می شود. اجازه break point هنگامی که خطوط برنامه را بوسیله نقاط

آنرا با پارامتر ١٠ فراخوانی نمایید. به زودی Loop ایجاد کنید. و متد Demo بدید این کار رو انجام بدهیم. شی ای از کلاس

اثر کرده. محیط کد نویسی برنامه باز می شود. و خط جاری را نمایش می دهد. همچنین دیباگر برنامه نیز break point نقطه

باز می شود. این وضعیت را می توانید در شکل ١٧ ببینید.

شکل ١٧ : پنجره دیباگر برنامه

شده ، خطی است که قرار است اجرا شود. یعنی برنامه در خط (high Light) خطی از برنامه که در محیط کدنویسی مشخص

قبلی متوقف شده است.

٢٨

٢ ) اجرا خط به خط کدها -٧

را در دیباگر فشار دهید. حال که ما برنامه را متوقف کردیم. Step and Step Into برای اجرا خط بخ خط کدها یتان دکمه

می توانیم اجرا یک مرحله از کدها را مشاهده کنیم. و ببینیم که در حین اجرا چه اتفاقی می افتد. برای انجام این کار ، بصورت

را از پنجره دیباگر فشار دهید. شما باید تغییراتی در خطوط برنامه تان ببینید ( خط واضح شده به خطی که Step تکراری ، دکمه

را فشار دهید. یک خط از برنامه اجرا شده و اجرا برنامه متوقف می Step اجرا شده منتقل می شود ) هر وقت که شما دکمه

( sum شود. توجه کنید که مقدار متغییرهای درون پنجره دیباگر نیز تغییر می کند ( به عنوان مثال مقدار متغییر

بنابراین شما می توانید مرحله به مرحله برنامه تان را اجرا کنید و ببینید که چه اتفاقی می افتد. برای این که به این کار خاتمه

موجود در دیباگر را فشار دهید تا اجرا Continue کلیک کنید. تا پاک شوند و همچنین دکمه breakpoint دهید. بر روی نقاط

را بر روی Breakpoint برنامه بصورت عادی پیگیری شود. اجازه دهید تا این مراحل را با یک متد دیگر امتحان نماییم. نقطه

خط

Places = myCar.seats ();

تنظیم می نماییم. Demo از کلاس carTest() مربوط به متد

٣ ) بررسی متغییرها -٧

خلاصه : بررسی متغییرها بسیار ساده می باشند. متغییرها بصورت خودکار در دیباگر به نمایش در می آیند. هنگامی که شما

می نماید. بسیار مهم می باشد که قادر باشید. از وضعیت اشیا باخبر باشید ( مثلا : متغییرهای (debug) کدهایتان را رفع خطا

محلی و متغییرهای نمونه ) . انجام این کار بسیار ساده و جزئی می باشد. شما نیاز به یک دستور خاص برای بررسی متغییرها

ندارید. متغییرهای استاتیک ، متغییرهای نمونه از شی جاری ، متغییرهای محلی متد جاری همواره به صورت خودکار نمایش داده

شده و همچنین بروز رسانی نیز می شوند. شما می توانید متدها را در فراخوانی متوالی انتخاب کنید. تا متغییرهای دیگر اشیا و

قرار دهید. در سمت carTest() در متد break point متدهای فعال جاری را مشاهده نمایید. به عنوان مثال ، مجددا یک نقطه

را مشاهده خواهید کرد. که در حال حاضر موارد زیر را نمایش ( call sequence) چپ پنجره دیباگر شما فراخوانی متوالی

می دهد:

Car.seats

Demo.carTest

فراخوانی شده است. شما می توانید از این لیست گزینه Demo.carTest بوسیله Car.Seats این اشاره می کند به این که

را برای بررسی کد مربوطه و همچنین مقدار متغییرهای جاری این متد انتخاب نمایید. Demo.carTest

را که بصورت my car می باشد. عبور کنید می توانید مقدار متغییر محلی new Car(…) اگر شما از خطی که شامل ساختار

می باشد مشاهده نمایید. مقدار تمام انواع اشیا ( به جز رشته ها ) از این راه نمایش داده می شود. شما <object refrence>

می توانید با دو بار کلیک کردن بر روی متغییرها انها را بررسی نمایید. انجام این کار شبیه باز کردن پنجره بررسی شی

4 مورد بررسی قرار گرفت. - می باشد . که در بخش 1

٢٩

۴ ) متوقف کردن و خاتمه دادن برنامه -٧

موجود در دیباگر برای ایجاد توقف بطور موقت یا دائم در برنامه بکار می روند. Terminate و Halt خلاصه : گزینه های

گاهی اوقات اجرا برنامه بسیار طول می کشد. و ما متعجب از این که همه چیز درست هست. شاید برنامه شما در یک حلقه

را longloop() نامتنهاهی گرفتار امده و به همین دلیل اجرا برنامه به طول می انجامد. خب ما این مورد را بررسی می کنیم. متد

انتخاب نمایید. حالا ما قصد داریم ببینیم که برنامه به کجا منتقل می شود. پنجره دیباگر را نگاه کنید اگر هنوز بر Demo از کلاس

تعیین کرده باشیم break point را فشار دهید .اجرا برنامه اگر ما نقطه Halt روی صفحه نمایش ظاهر نشده است. حالا دکمه

متوقف می شود. شما حالا می توانید مرحله به مرحله پیش بروید و از متغییرها رو مشاهده کنید که همه مقدار درستی دارند.این

استفاده Halt و Continue عمل فقط نیاز به مقداری زمان برای تکمیل شدن دارد. شما می توانید به دفعات زیاد از دکمه های

کنید تا بتوانید سریعتر پیش بروید.اگر شما قصد ندارید که ادامه دهید (به عنوان مثال جای واقعی حلقه بی نهایت را پیدا کرده اید )

مکررا استفاده Terminate را فشار دهید تا اجرای برنامه متوقف شود. شما نمی توانید ازدکمه terminate می توانید دکمه

نماید.

فصل ٨ - ایجاد یک برنامه کاربردی خود اتکا

٣٠

را انتخاب نمایید. create jar file گزینه project خلاصه : برای ایجاد یک برنامه خود اتکا از منوی

اجرایی ، در سیستم های نظیر ویندوز و مکینتاش با Jar قابل اجرا تولید نماید. فایل های Jar می تواند فایل های BlueJ

با تایپ دستور زیر : Unix و Dos دو بار کلیک کردن بر روی فایل اجرا می شوند. و در سیستم های نظیر

Java –jar <file name>.jar

قرار دارد. انجام می دهیم. پروژه را باز کنید. مطمئن شوید که پروژه examples که در پوشه people ما این کار را برای پروژه

را انتخاب نمایید. create jar file گزینه Project کامپایل شده و بعد از منوی

را انتخاب نمایید ( عکس ١٨ ) .این کلاس باید شامل یک main پنجره ای باز می شود.که به شما اجازه می دهد تا کلاس

باشد. ( public static void main(String[] args) : که امضا آن بدین شکل باشد ) main متد

"create jar file " عکس ١٨ : پنجره

را انتخاب Hello ساده می باشد. زیرا ما تنها یک کلاس داریم. بنابراین از منوی بازشونده main در مثال ما انتخاب کلاس

نمایید.

معمولا شما سورس برنامه را به همراه فایل اجرایی قرار نمی دهید. ولی اگر قصد دارید که برنامه تان شامل سورس برنامه هم

را تیک بزنید. ( به عنوان مثال شما می توانید کل پروژه تان را با استفاده از فرمت include source باشد . می توانید گزینه

در قالب یک فایل بوسیله ایمیل برای دیگران ارسال نمایید ) . jar

را به گونه ای تنظیم کرده اید. که BlueJ اگر شما

را طی کنید ) استفاده کند. در وسط این Tools / performance / libraries برای اینکار مسیر ) user library از

اگر شما از کتابخانه ها استفاده ) . "Include user libraries" : پنجره شما ناحیه ای را با این عنوان مشاهده خواهید کرد

٣١

نکرده اید. این ناحیه نمایش داده نمی شود ) .شما می توانید انتخاب کنید کتابخانه های مختلفی را که پروژه شما از ان ها استفاده

نمایش (file chooser) را فشار دهید تا به مرحله بعد بروید. در این بخش یک پنجره انتخاب کننده فایل Continue . می کند

را فشار دهید. برای این مثال شما تایپ کنید: Create را تایپ کرده و دکمه Jar داده می شود. که شما با استفاده از ان نام فایل

ایجاد می شود. hello.jar را فشار دهید. اگر شما به فایل تان کتابخانه ای را اضافه نکرده باشید. فایل create و دکمه Hello

در آن قرار دارد. همچنین این hello.jar ایجاد شده که فایل hello و اگر برنامه شما شامل کتابخا نه ای باشد. پوشه ای با نام

شما کتابخانه های مورد نیاز خود را در پوشه ای همنام با خودش Jar پوشه شامل تمامی کتابخانه های مورد نیاز می باشد. فایل

بتواند کتابخانه های مورد نیاز را پیدا نماید. Jar را یا این پوشه جابجا کنید. تا فایل Jar می یابد. بنابراین همواره فایل

می توانید آنرا اجرا کنید. Jar می باشد. با دو بار کلیک بر روی فایل (GUI) اگر برنامه شما شامل یک رابط گرافیکی کاربر

و یا پنجره داس می توانید انرا Text Terminal می باشد. شما با استفاده از I/O تنها شامل یک Jar و اگر مانند مثال ما فایل

اجرا کنید. برای اینکار مراحل زیر را طی کنید:

قرار دارد رفته و دستور زیر را تایپ کنید: .jar به محلی که فایل Text Terminal در پنجره داس یا

Java –jar hello.jar

بدین گونه فایل شما اجرا می شود.

فصل ٩ – ایجاد اپلت ها

٣٢

١) اجرا کردن اپلت ها -٩

را انتخاب نمایید. Run Applet گزینه applet خلاصه : برای اجرا کردن اپلت ها از منوی بازشونده

یک Examples و در پوشه BlueJ به شما اجازه می دهد که اپلت ها را مانند اپلیکیشن ها ایجاد و اجرا کنید. به همراه BlueJ

را از پوشه Appletdemo نمونه اپلت وجود دارد. ما در ابتدا قصد داریم تا اپلت را اجرا نماییم . برای اینکار پروژه

انتخاب نمایید. examples

<<applet>> میباشد. این کلاس بوسیله تگ CaseConvertor شما خواهید دید که این پروژه تنها شامل یک کلاس با نام

را از منوی باز شونده کلاس انتخاب نمایید. Run Applet مشخص شده است. بعد از کامپایل پروژه ، گزینه

.( پنجره ای باز می شود که به شما یک سری گزینه ارائه می دهد ( عکس ١٩

Run Applet عکس ١٩ : پنجره

Applet viewer شما در این پنجره می بینید که می توانید انتخاب کنید که اپلت در یک مرورگر نمایش داده شود و یا اینکه در

را فشار دهید. Ok مربوطه تولید شده و اپلت اجرا نشود. تنظیمات پیش فرض را دست نزنید و دکمه webpage ویا اینکه تنها

نمایش داده شده و اپلت شما را نمایش می دهد. Applet viewer بعد از چند ثانبه

بر روی سیستم شما نصب شده و همواره این تضمین وجود دارد که نسخه کامپایلر جاوای j2se بهمراه Applet Viewer

یکسان باشد. در مورد مرورگر وب شما امکان دارد. که مرورگر از نسخه دیگری از جاوا استفاده Applet viewer شما و

کند و این مورد باعث بروز یک سری مشکل شود. البته در حال حاضر اکثر مرورگر ها بخوبی با جاوا کار می کنند.

از مرورگر پیش فرض سیستم عامل استفاده می کند. اما در سیستم های BlueJ ، در سیستم عامل ویندوز و مکینتاش

مشخص شده است. BlueJ مرورگر در تنظیمات ، Unix

٢ ) ایجاد کردن اپلت -٩

٣٣

را از نوع کلاس انتخاب نمایید. Applet کلیک کرده و New Class خلاصه: برای ایجاد اپلت بر روی دکمه

بعد از این که مشاهده کردید چگونه می توان یک اپلت را اجرا کرد. حالا قصد داریم تا خودمان یک اپلت ایجاد نماییم.

ایجاد کنید. انرا کامپایل کنید. و در نهایت اجرا کنید. این کار انجام شد !!! Applet یک کلاس جدید با فرمت

حالا می توانیذ کدهای اپلت را در ادیتور ببینید.و مشاهده کنید که شامل تمامی کدهای مورد نیاز برای اپلت می باشد.

. paint به عنوان مثال متد

٣) آزمایش کردن اپلت -٩

در بسیاری از حالت ها ایجاد شی اپلت بر روی میز کار اشیا بسیار مفید خواهد بود. شما می توانید از منوی بازشونده اپلت

سازنده اپلت را مشاهده نمایید. از میز کار اشیا شما نمی توانید یک اپلت را به طور کامل اجرا کنید. بلکه بعضی از متدهای

آن را می توانید فراخوانی نمایید. این موضوع برای تست کردن یک متد که شما در بین کدهای اپلت نوشته اید می تواند مفید

و یا مرورگر Applet viewer تعین کرده اید. در حالتی که اپلت در break point باشد. اگر شما برای اپلت تان نقاط

وب اجرا می شود. هیچ گونه تاثیری ندارد. زیرا انها از ماشین های مجازی مربوط به خود بهره می برند. و نمی توانند معنای

قرار داده درک کنند. BlueJ را که نرم افزار break point نقاط

ها و همچنین کامپایل مرحله به مرحله در اپلت تان استفاده کنید. شما می توانید Break point اگر شما قصد دارید تا از

که بوسیله مایکل تریکوبوف نوشته شده استفاده نمایید. این کلاس برای شما فریمی را AppletWindow از کلاس

اجرا نماید. به گونه ای که متدهای BlueJ بوجود می اورد. که با استفاده از ان می توانید اپلت ها را مستقیما در درون

سایت Resource عادی مربوط به رفع خطا کار کنند. شما این کلاس و یک نسخه نمونه از ان را می توانید در بخش

بیابید. BlueJ

فصل ١٠ - اعمال دیگر

٣۴

BlueJ در BlueJ ١ ) باز کردن پکیج های غیر -١٠

را انتخاب نمایید. Open Non-BlueJ گزینه Project از منوی BlueJ خلاصه : برای باز کردن پکیج های غیر

مشاهده نمایید. BlueJ ایجاد شده در درون BlueJ به شما اجازه می دهد تا پکیج های را که در خارج از محیط BlueJ

را انتخاب کرده . سیستم از شما مکان و پوشه ای را که Open Non BlueJ گزینه Project برای انجام اینکار از منوی

قصد دارید انرا باز کنید. سوال خواهد کرد.

٢ ) اضافه کردن کلاس های موجود به پروژه تان -١٠

Add Class From file خلاصه : کلاس ها را می توانید از جایی خارج از پروژه ، به پروژه اضافه کنید . برای اینکار از گزینه

بهره خواهیم جست.

قرار دارد. به عنوان مثال استاد شما به شما BlueJ گاهی اوقات شما نیاز دارید تا از کلاسی استفاده کنید که در خارج از محیط

از Add Class Form file کلاس جاوای داده تا از آن در پروژه تان استفاده کنید. شما می توانید به سادگی با انتخاب گزینه

برنامه ، کلاسی را که در خارج از پروژه تان قرار دارد. به پروژه اضافه نمایید. شما با این روش فایل های Edit منوی

ختم شده اند ) را به پروژه تان وارد نمایید. هنگامی که شما کلاس مورد نظر را .java سورس جاوا ( یعنی فایل های که به

به پروژه تان اضافه می کنید. یک نسخه از ان در پوشه پروژه کپی می شود. این _______عمل دقیقا شبیه به این است که شما

یک کلاس ایجاد کرده وتمام کدهای آنرا خودتان تولید نمایید.

روش دیگر برای اضافه کردن یک کلاس به پروژه ، بدین صورت می باشد که شما فایل سورس جاوا را در پوشه پروژه

کلاس مورد نظر را در نمایش BlueJ باز کنید. خواهید دید که BlueJ کپی کنید. هنگامی که دوباره پروژه را بوسیله

ترسیمی نمایش خواهد داد.

: static و main ٣) فراخوانی متدهای -١٠

را می توان از منوی بازشونده کلاس فراخوانی کرد. static خلاصه :متدهای

استاندارد main بوسیله یک متد ( Hello Class ) باز کنید. تنها کلاس این پروژه examples را از پوشه hello پروژه

main تعریف شده است. بر روی کلاس کلیک راست کرده ، منوی کلاس تنها شامل سازنده کلاس نیست . بلکه متد استاتیک

را از این منو فراخوانی نمایید. تمام متدهای استاتیک را می توان شبیه به mian هم نمایش داده می شود. شما می توانید متد

همین مورد فراخوانی نمود.

شامل آرایه ای از رشته ها به عنوان پارامتر می باشد. شما می توانید آرایه ای از رشته ها را بر اساس main متد استاندارد

قواعد جاوا برای این متد ارسال کنید. به عنوان مثال :

{"one", "two", "three"}

در ضمن باید براکت ها را هم به عنوان پارامتر ارسال کنید.

٣۵

توجه: در جاوا استاندارد شما نمی توانید از آرایه های ثابت به عنوان آرگومان برای فراخوانی متدها استفاده کنید. شما از آن ها

ما به شما اجازه می دهیم که شما برای تعامل و فراخوانی متد BlueJ فقط برای دادن مقدار اولیه می توانید استفاده کنید. در

از آرایه های ثابت به عنوان پارامتر استفاده نماید. Main

۴) تولید اسناد -١٠

را انتخاب کنید. Project Documentation گزینه Tools خلاصه : برای تولید سند برای پروژه تان ، از منوی

سند تولید نمایید. برای انجام این کار از منوی javadoc می توانید برای پروژه تان در فرمت استاندارد BlueJ شما بوسیله

را انتخاب نمایید. Project Documentation گزینه Tools

با این کار برنامه برای تمام کلاس های موجود در پروژه تان با استفاده کلاس های سورس شان سند تولید می کند و مرورگر وب

را برای نمایش انها باز می نماید.

شما همچنین می توانید سند را برای یک کلاس تولید کرده و ببینید. برای انجام این کار به محیط کد نویسی کلاس مربوطه بروید.

کلاس مربوطه را خواهید دید. javadoc تغییر دهید. در این حالت شما سند Interface را به Implementation و حالت

۵) کار کردن با کتابخانه ها -١٠

می توانید کلاس های استاندارد جاوا را مشاهده کنید. Help از Java Class Liberies خلاصه : شما با انتخاب گزینه

همانطور که می دانید ؛ هنگامی که شما با جاوا یک برنامه می نویسید. شما به کتابخانه استاندارد جاوا مراجعه می کنید.

را انتخاب Java Class Libraries گزینه Help شما برای دیدن اسناد مربوط به این کتابخانه ها می توانید از منوی

باشید ) Online کنید. ( البته شما باید

هم می توانید این کار را انجام دهید. برای دیدن offline البته اگر اسناد جاوا را به طور محلی نصب کرده اید در حالت

مراجعه نمایید. BlueJ جزئیات این کار به سایت

۶ ) ایجاد اشیا از کلاس های کتابخانه ای -١٠

را انتخاب نمایید. Use Library Class گزینه Tools خلاصه : برای ایجاد اشیا از کلاس های کتابخانه ای از منوی

همچنین توابعی را ارائه می دهد تا شما بتوانید از کلاس های که جز پروژه تان نیست ولی در کتابخانه موجود است BlueJ

ایجاد کنید. این مورد برای ArrayList و یا String اشیای ایجاد کنید. برای مثال شما می توانید اشیایی از کلاس های

تجربه کردن کار کردن اشیا این کلاس ها می تواند خیلی مفید باشد.

می توانید از کتابخانه یک شی ایجاد کنید. پنجره ای باز می شود Tools از منوی Use Library Class شما با انتخاب

باید توجه کنید که نام کامل کلاس باید ) java.lang.String که به شما اجازه می دهد تا نام کامل کلاس را وارد کنید، مانند

شامل پکیج های که کلاس جز آن است باشد )

محل ورود متن () شامل یک منوی بازشونده است که شامل نام آخرین کلاس های است که شما استفاده کرده اید با انتخاب

٣۶

کلاس مربوطه لیست می شود. static تمام سازنده ها و متدهای ، Enter یکی از این کلاس ها و فشار دادن دکمه

را با انتخاب کردن می توان مورد استفاده قرار داد. static هر کدام از این سازنده ها و یا متدهای

فصل ١١ -- خلاصه ها

شروع کردن

را انتخاب کنید. open گزینه Project ١. برای باز کردن پروژه از منوی

انتخاب کنید. Class (popup) را از منوی بازشونده (constructor) ٢. برای ایجا یک شی ، سازنده

انتخاب کنید. (object) ٣. برای اجرایی کردن یک متد ، آنرا از منوی بازشونده شی

۴. برای ویرایش کردن سورس یک کلاس بر روی آیکون کلاس دو بار کلیک کنید.

پنجره compile ادیتور را فشار دهید. و برای کامپایل یک پروژه دکمه compile ۵. برای کامپایل یک کلاس ، دکمه

پروژه را فشار دهید.

۶. اگر در هنگام کامپایل کردن با پیام خطایی مواجه شدید. با فشار دادن علامت سوال ( ؟ ) در محیط کدنویسی اطلاعات

بیشتری در مورد آن خطا بدست اورید.

انجام اعمال بیشتر

٧. ناظر اشیا به شما اجازه می دهد با چک کردن موقعیت درونی اشیا یک سری از رفع خطاهای ساده را انجام دهید.

٨. با کلیک کردن بر روی آیکون اشیا می توان پارامترهای را به متدهای انها ارسال نمود.

ایجاد پروژه جدید

را انتخاب نمایید. New…. گزینه Project ٩. برای ایجاد پروژه جدید از منوی

را فشار دهید. نام مشخصی برای کلاس قرار دهید. New class ١٠ . برای ایجاد کلاس جدید دکمه

کنید. Drag را فشار دهید. و آنرا بر روی صفحه طراحی Arrow دکمه . (Arrow) ١١ . برای ایجاد یک پیکان

یا اینکه می توانید مستقیما در محیط کدنویسی ، کد مربوطه را وارد نمایید.

را انتخاب نمایید. remove ١٢ . برای حذف کلاس و یا یک پیکان ، از منوی بازشونده گزینه

استفاده از محیط کدنویسی

را انتخاب نمایید. Show Code Pad گزینه view ١٣ . برای شروع کار با محیط کدنویسی ، از منوی

١۴ . برای امتحان کردن دستورات جاوا ، آنها را در محیط کدنویسی تایپ نمایید.

١۵ . برای انتقال اشیا از محیط کدنویسی به شاخه اشیا ، آیکون کوچک اشیا را درگ کنید.

٣٧

١۶ .برای دیدن اشیا در محیط کدنویسی ، بر روی آیکون کوچک اشیا دوبار کلیک کنید.

١٧ . دستوراتی که در محیط کدنویسی تایپ می نمایید. اجرایی هستند.

را فشار دهید. enter+shift ١٨ . برای وارد کردن دستورات چند خطی در پایان خط

١٩ . متغییرهای محلی می توانند در دستورات تک خطی یا چند خطی استفاده شوند. نام های اشیا در فیلدهای نمونه اشیا

ذخیره می شوند.

٢٠ . با استفاده از نشانگرهای بالا و پایین صفحه کلید برای دیدن تاریچه ورودی ها استفاده نمایید.

رفع خطا

در سمت چپ محیط کدنویسی کلیک نمایید. breakpoint در منطقه Breakpoint ٢١ . برای ایجاد

در دیباگر برنامه استفاده نمایید. Step into و Step ٢٢ . برای دیدن کامپایل خط به خط برنامه از گزینه های

٢٣ . نظارت کردن بر متغییرها ساده است – تمام انها بصورت اتوماتیک در دیباگر نمایش داده می شوند.

دیباگر انجام دهید. Terminate و Halt ٢۴ . ایجاد توقف یا خاتمه دادن به برنامه را می توانید با گزینه های

ایجاد برنامه های خود اتکا ( خود اجرا )

را انتخاب نمایید. create jar file… گزینه project ٢۵ . برای ایجاد برنامه های خود اجرا از منوی

ایجاد اپلت ها

را انتخاب نمایید. Run Applet ٢۶ . برای اجرا اپلت ها از منوی بازشونده اپلت گزینه

را از انواع کلاس انتخاب نمایید. Applet را فشار داده و گزینه New class ٢٧ . برای ایجاد اپلت ها دکمه

اعمال دیگر

باز کرد. Open Non BlueJ و انتخاب گزینه Project را می توان با استفاده از منوی blueJ ٢٨ . پکیج های غیر

و انتخاب گزینه Edit هستند را می توانید با استفاده از منوی BlueJ ٢٩ . کلاس های که خارج از محیط

انتخاب نمایید. Add Class from file…..

کلاس را می توانید با استفاده از منوی بازشونده کلاس فراخوانی نمایید. static ٣٠ . متدهای

را انتخاب نمایید. Project Documentation گزینه Tools ٣١ . برای تولید سند برای پروژه تان از منوی

را انتخاب نمایید. java standard Libraries گزینه Help ٣٢ . برای دیدن کلاس های استاندارد جاوا از منوی

را انتخاب نمایید. Use Class Library گزینه Tools ٣٣ . برای ایجاد اشیا از کلاس های کتابخانه ای از منوی__

   + MOHSEN GHASEMI - ۱۱:۳٧ ‎ب.ظ ; ۱۳۸٩/۳/٢٩