6-Ε-170__absolute java__Περιεχομενα__ΙΩΝ

Page 1

Óçìåßùìá ôïõ ÅðéìåëçôÞ Óôç äéåèíÞ âéâëéïãñáößá êõêëïöïñïýí äåêÜäåò âéâëßá ðïõ áíáöÝñïíôáé óå ãëþóóåò ðñïãñáììáôéóìïý, ìåôáîý ôùí ïðïßùí êáé óôç Java. ¼ôáí îåêßíçóá íá óõìâïõëåýïìáé ôçí îåíüãëùóóç Ýêäïóç ôïõ âéâëßïõ Áðüëõôç Java ôïõ ÊáèçãçôÞ ôïõ ðáíåðéóôçìßïõ ôçò Êáëéöüñíéá, W. Savitch, óõíåéäçôïðïßçóá üôé óõãêÝíôñùíå üëá åêåßíá ôá óôïé÷åßá ðïõ Þëðéæá êÜðïéá óôéãìÞ íá âñù óå Ýíá âéâëßï ðñïãñáììáôéóìïý åäþ êáé 20 ÷ñüíéá. Ôï âéâëßï áõôü äåí ðåñéãñÜöåé ìüíï óôïé÷åßá ôçò ãëþóóáò Java. ÐåñéãñÜöåé ìå áðëü áëëÜ ôáõôü÷ñïíá êáé áíáëõôéêü ôñüðï èåìåëéþäåéò êáé ðñï÷ùñçìÝíåò ôå÷íéêÝò ðñïãñáììáôéóìïý, äïìÝò äåäïìÝíùí, ìåèüäïõò áíÜðôõîçò äéåðáöþí ÷ñÞóôç, ìåèüäïõò ÷åéñéóìïý ôùí óöáëìÜôùí, êáèþò êáé üëá üóá ðñÝðåé íá ãíùñßæåé Ýíáò ðñïãñáììáôéóôÞò ãéá íá äçìéïõñãåß åðáããåëìáôéêïý åðéðÝäïõ åöáñìïãÝò. Ï ìåãÜëïò üãêïò ôïõ âéâëßïõ äåν èá ðñÝðåé íá óáò ôñïìÜæåé. Ç äïìÞ ôïõ åßíáé ìåëåôçìÝíç þóôå äéáöïñåôéêÝò êáôçãïñßåò áíáãíùóôþí íá ìðïñïýí íá ëáìâÜíïõí ôéò ðëçñïöïñßåò ðïõ ÷ñåéÜæïíôáé áðü Ýíá êáôÜëëçëï õðïóýíïëü ôïõ. Ãéá ôï óêïðü áõôü, ìÝóá óôï âéâëßï äßíïíôáé êáôåõèýíóåéò ðïõ åðéôñÝðïõí óôïõò áíáãíþóôåò íá ìåôáâáßíïõí ãñÞãïñá óôá óçìåßá ðïõ ôïõò åíäéáöÝñïõí. Óå üëï ôï âéâëßï áêïëïõèåßôáé ìéá áðïôåëåóìáôéêÞ äéäáêôéêÞ ìåèïäïëïãßá ðïõ ðåñéëáìâÜíåé åðáíáëÞøåéò åííïéþí, ðáñáäåßãìáôá, áóêÞóåéò áõôïáîéïëüãçóçò êáé ïëïêëçñùìÝíåò åñãáóßåò ðñïãñáììáôéóìïý. Ç ðñïóÝããéóç áõôÞ êáèéóôÜ ôï âéâëßï ðïëýôéìï ãéá Ýíá åõñý áíáãíùóôéêü êïéíü ðïõ ðåñéëáìâÜíåé áñ÷Üñéïõò áëëÜ êáé Ýìðåéñïõò ðñïãñáììáôéóôÝò, êáèçãçôÝò ó÷ïëþí, êáé öïéôçôÝò. ¸÷ïíôáò êáôÜ íïõ üëá ôá ðáñáðÜíù ðëåïíåêôÞìáôá ôïõ âéâëßïõ, áíÝëáâá ôçí åõèýíç ôçò åðéìÝëåéáò ôçò åëëçíéêÞò Ýêäïóçò ðïõ äéáâÜæåôå áõôÞ ôç óôéãìÞ. Ãéá ôçí áðüäïóç ôïõ âéâëßïõ áðáéôÞèçêáí ðåñéóóüôåñá áðü äýï ÷ñüíéá óêëçñÞò äïõëåéÜò. Óå óõíåñãáóßá ìå ôçí Ýìðåéñç ìåôáöñÜóôñéá ê. A. ÓôåéáêÜêç, êáôáâëÞèçêå ðñïóðÜèåéá íá áðïäïèåß óùóôÜ ç ôå÷íéêÞ ïñïëïãßá, äéáôçñþíôáò ðÜíôá Ýíá ãëùóóéêü åðßðåäï ðïõ áñìüæåé óå ìéá ðáíåðéóôçìéáêÞ Ýêäïóç. Óôá ðëáßóéá ôçò âåëôßùóçò ôùí åêöñÜóåùí êáé ôçò áðüäïóçò ôçò ïñïëïãßáò óôá åëëçíéêÜ åëÞöèçóáí õðüøç êáé ôá áðïôåëÝóìáôá ôçò ðåéñáìáôéêÞò åöáñìïãÞò ôïõò óôï ìÜèçìá ôïõ ðñïãñáììáôéóìïý åëëçíéêþí ðáíåðéóôçìéáêþí êáé ôå÷íïëïãéêþí éäñõìÜôùí. ÅðéðëÝïí, ðñáãìáôïðïéÞèçêáí äéïñèþóåéò óöáëìÜôùí ðïõ åíôïðßóôçêáí óôï êåßìåíï êáé óôá ó÷Þìáôá ôçò ðñùôüôõðçò Ýêäïóçò ôïõ âéâëßïõ. Óõíåðþò ç åëëçíéêÞ Ýêäïóç ôïõ âéâëßïõ ìðïñåß íá èåùñåßôáé âåëôéùìÝíç óå ó÷Ýóç ìå ôï ðñùôüôõðï. Ùóôüóï, êáèþò ðÜíôá õðÜñ÷ïõí ðåñéèþñéá âåëôßùóçò, èá Þèåëá íá ðáñáêáëÝóù ôïõò áíáãíþóôåò, äéäÜóêïíôåò Þ äéäáóêüìåíïõò, íá ìïõ áðïóôÝëëïõí ôá ó÷üëéÜ ôïõò ìÝóù çëåêôñïíéêïý ôá÷õäñïìåßïõ. ÐñÝðåé íá óçìåéùèåß üôé ôï âéâëßï áõôü ðñïóöÝñåôáé ôüóï ãéá ôçí áõôïäéäáóêáëßá üóï êáé ãéá ôç äéäáóêáëßá ôïõ ìáèÞìáôïò ôïõ áíôéêåéìåíïóôñåöïýò ðñïãñáììáôéóìïý óå ðáíåðéóôçìéáêÜ êáé ôå÷íïëïãéêÜ éäñýìáôá. ÌÜëéóôá, ç îåíüãëùóóç Ýêäïóç äéäÜóêåôáé Þäç êáé ðñïôåßíåôáé óôïõò öïéôçôÝò ìåãÜëùí áããëüöùíùí ðáíåðéóôçìßùí ôïõ åîùôåñéêïý, üðùò åßíáé ôá ðáíåðéóôÞìéá ôçò Âïóôüíçò, ôçò Êáëéöüñíéá, ôïõ ÌÜíôóåóôåñ êáé ôïõ Ëïíäßíïõ. Åý÷ïìáé ôï âéâëßï áõôü íá óáò âïçèÞóåé íá ãíùñßóåôå êáé íá áãáðÞóåôå ôïí áíôéêåéìåíïóôñåöÞ ðñïãñáììáôéóìü, íá ðñïÜãåé ôï åðßðåäï ôùí ãíþóåþí óáò êáé íá óõìâÜëåé óôçí åðéôõ÷ßá ôçò åðáããåëìáôéêÞò óáò óôáäéïäñïìßáò. Äñ. ÄçìÞôñçò Éáêùâßäçò dimitris.iakovidis@ieee.org


iv

Óçìåßùìá ôïõ ÅðéìåëçôÞ

ÂéïãñáöéêÜ Óôïé÷åßá ÅðéìåëçôÞ Ï Äñ. ÄçìÞôñçò Ê. Éáêùâßäçò, åßíáé ÄéäÜêôïñáò ôïõ ÔìÞìáôïò ÐëçñïöïñéêÞò êáé Ôçëåðéêïéíùíéþí ôïõ Ðáíåðéóôçìßïõ Áèçíþí ìå ðïëõåôÞ åìðåéñßá óôçí áíÜðôõîç óõóôçìÜôùí ëïãéóìéêïý. Ôá ôåëåõôáßá ÷ñüíéá Ý÷åé óõíåñãáóôåß ùò Åðßêïõñïò ÊáèçãçôÞò (Ð.Ä. 407/80) ìå ôï ÐáíåðéóôÞìéï ÓôåñåÜò ÅëëÜäïò, ùò Åðéóôçìïíéêüò ÓõíåñãÜôçò óôç âáèìßäá ôïõ Åðßêïõñïõ ÊáèçãçôÞ ìå ôï ÔìÞìá ÐëçñïöïñéêÞò êáé Ôå÷íïëïãßáò Õðïëïãéóôþí ôïõ Ôå÷íïëïãéêïý Åêðáéäåõôéêïý Éäñýìáôïò ôçò Ëáìßáò, êáé ùò ËÝêôïñáò (Ð.Ä. 407/80) ìå ôï ÔìÞìá ÐëçñïöïñéêÞò êáé Ôçëåðéêïéíùíéþí ôïõ Ðáíåðéóôçìßïõ Áèçíþí, ãéá ôç äéäáóêáëßá ôùí ìáèçìÜôùí Ðñïãñáììáôéóìïý ìå ãëþóóåò Java êáé C, ØçöéáêÞò Åðåîåñãáóßáò ÓÞìáôïò êáé Åéêüíáò, ÓõóôçìÜôùí Ðñáãìáôéêïý ×ñüíïõ, êáé ÐëçñïöïñéêÞò. ¸÷åé óõììåôÜó÷åé ùò óõããñáöÝáò óå ðåñéóóüôåñåò áðü 50 åñåõíçôéêÝò äçìïóéåýóåéò óå äéåèíÞ åðéóôçìïíéêÜ ðåñéïäéêÜ êáé óõíÝäñéá óôï ÷þñï ôçò ðëçñïöïñéêÞò, ùò ôáêôéêüò êñéôÞò óå 8 åðéóôçìïíéêÜ ðåñéïäéêÜ, êáé ùò åñåõíçôÞò-ðñïãñáììáôéóôÞò óå ðåñéóóüôåñá áðü 10 åñåõíçôéêÜ êáé áíáðôõîéáêÜ ðñïãñÜììáôá. Óôá ðëáßóéá ôçò åëåýèåñçò åðáããåëìáôéêÞò ôïõ äñáóôçñéüôçôáò Ý÷åé áíáðôýîåé ïëïêëçñùìÝíá åðáããåëìáôéêÜ óõóôÞìáôá ëïãéóìéêïý ãéá ðïëëÝò éäéùôéêÝò åôáéñåßåò êáé äçìüóéïõò ïñãáíéóìïýò.

ÂéïãñáöéêÜ Óôïé÷åßá Μεταφραστή Ôç ìåôÜöñáóç ôïõ âéâëßïõ áíÝëáâå íá áðïäþóåé ìå áêñßâåéá ç ê. ¢ííá ÓôåéáêÜêç, ðôõ÷éïý÷ïò ôïõ ÔìÞìáôïò ÁããëéêÞò Ãëþóóáò ôïõ Ðáíåðéóôçìßïõ Áèçíþí ìå ìåôáðôõ÷éáêÝò óðïõäÝò óôç ÷ñÞóç ôçò ÁããëéêÞò ãëþóóáò óå óõíÜöåéá ìå ôéò íÝåò ôå÷íïëïãßåò.


Ðñüëïãïò Ôï âéâëßï áõôü ó÷åäéÜóôçêå ìå óôü÷ï íá ÷ñçóéìïðïéçèåß ôüóï ùò åã÷åéñßäéï üóï êáé ùò âïÞèçìá ãéá ôïí ðñïãñáììáôéóìü óå ãëþóóá Java. Áí êáé ðåñéëáìâÜíåé ðñïãñáììáôéóôéêÝò ôå÷íéêÝò Ý÷åé óôïé÷åéïèåôçèåß ãýñù áðü ôá ÷áñáêôçñéóôéêÜ ôçò ãëþóóáò Java ðåñéóóüôåñï áðü ïðïéïäÞðïôå óõãêåêñéìÝíï ðñüãñáììá äéäáóêáëßáò ôå÷íéêþí ðñïãñáììáôéóìïý. Ôï êýñéï áíáãíùóôéêü êïéíü ãéá ôï ïðïßï ãñÜöôçêå áõôü ôï âéâëßï åßíáé ïé ðñïðôõ÷éáêïß öïéôçôÝò ïé ïðïßïé äåí Ý÷ïõí ìåãÜëç ðñïãñáììáôéóôéêÞ åìðåéñßá óå ãëþóóá Java. Õðü ôïõò üñïõò áõôïýò, èá ìðïñïýóå íá áðïôåëÝóåé ôï êáôáëëçëüôåñï êåßìåíï Þ âïÞèçìá åßôå ãéá Ýíá áñ÷éêü ìÜèçìá ðñïãñáììáôéóìïý óå Java, åßôå áñãüôåñá ãéá Ýíá ðéï åîåëéãìÝíï ìÜèçìá ðëçñïöïñéêÞò óôï ïðïßï ÷ñçóéìïðïéåßôáé ç Java. Áõôü ôï âéâëßï ó÷åäéÜóôçêå ãéá íá åîõðçñåôÞóåé ôéò áíÜãêåò åíüò ìåãÜëïõ öÜóìáôïò ÷ñçóôþí. Ôá ðñþôá êåöÜëáéá Ý÷ïõí ãñáöôåß óå åðßðåäï ðñïóéôü ãéá ôïõò áñ÷Üñéïõò, åíþ ïé åíüôçôåò ðïõ âñßóêïíôáé óôá åéäéêÜ ðëáßóéá ôùí êåöáëáßùí áõôþí áíôáðïêñßíïíôáé Üìåóá óôçí áíÜãêç ôùí ðéï Ýìðåéñùí ðñïãñáììáôéóôþí íá ãíùñßóïõí ôç âáóéêÞ óýíôáîç ôçò ãëþóóáò Java. Ôá ìåôÝðåéôá êåöÜëáéá Ý÷ïõí åðßóçò ó÷åäéáóôåß ìå åîßóïõ ðñïóéôü ôñüðï, üìùò åßíáé ãñáììÝíá óå åðßðåäï ðïõ åßíáé êáôÜëëçëï ãéá öïéôçôÝò ðïõ Ý÷ïõí Þäç óçìåéþóåé êÜðïéá ðñüïäï óå áõôÝò ôéò ðéï ðñï÷ùñçìÝíåò èåìáôéêÝò åíüôçôåò.

ÁËËÁÃÅÓ ÐÏÕ ÐÅÑÉËÁÌÂÁÍÅÉ ÁÕÔÇ Ç ÅÊÄÏÓÇ ÅÜí äåí Ý÷åôå ÷ñçóéìïðïéÞóåé ôçí ðñþôç Ýêäïóç áõôïý ôïõ âéâëßïõ, ôüôå ìðïñåßôå íá ðáñáëåßøåôå áõôÞ ôçí õðïåíüôçôá. ÅÜí Ý÷åôå ÷ñçóéìïðïéÞóåé ôçí ðñþôç Ýêäïóç, áõôÞ ç õðïåíüôçôá èá óáò åîçãÞóåé ôéò äéáöïñÝò ôçò äåýôåñçò Ýêäïóçò áðü ôçí ðñþôç. Ãéá ôïõò äéäÜóêïíôåò, ç ìåôÜâáóç áðü ôçí ðñþôç óôç äåýôåñç áõôÞ Ýêäïóç åßíáé áðëÞ. Ìðïñåßôå íá äéäÜîåôå ôï ßäéï ìÜèçìá, ðáñïõóéÜæïíôáò âáóéêÜ ôá ßäéá èÝìáôá ìå ôçí ßäéá óåéñÜ ìå ìåñéêÝò ðïëý ëåðôÝò áëëáãÝò óôçí ýëç ðïõ êáëýðôåôå. Ç ìåãáëýôåñç áëëáãÞ åßíáé üôé óå áõôÞ ôçí Ýêäïóç ÷ñçóéìïðïéåßôáé ç êëÜóç Scanner, ç ïðïßá åßíáé êáéíïýñéá óôçí Ýêäïóç 5.0 ôçò Java, êáé ÷ñçóéìïðïéåßôáé ãéá åßóïäï áðü ôï ðëçêôñïëüãéï. ÁõôÞ ç Ýêäïóç óõìðåñéëáìâÜíåé Ýíá ðëÞèïò åðéðñüóèåôùí èåìÜôùí ðïõ äßíïõí ôç äõíáôüôçôá íá ãßíïõí ðñïóèÞêåò óôï Þäç õðÜñ÷ïí ìÜèçìá. Ôï óçìáíôéêüôåñï áðü ôá êáéíïýñéá èÝìáôá åßíáé ï ãåíéêåõìÝíïò ðñïãñáììáôéóìüò (generic programming) êáôÜ ôïí ïðïßï ÷ñçóéìïðïéïýíôáé ôýðïé äåäïìÝíùí ðïõ ïñßæïíôáé ðáñáìåôñéêÜ. ÊáôÜ ôï ìåãáëýôåñï ìÝñïò, ôá êáéíïýñéá èÝìáôá áðïôåëïýí Üìåóï áðïôÝëåóìá ôùí áëëáãþí êáé ôùí ðñïóèçêþí ðïõ Ý÷ïõí ãßíåé óôçí Ýêäïóç 5.0 ôçò Java. Óôç íÝá áõôÞ Ýêäïóç ôïõ âéâëßïõ Ý÷ïõí óõìðåñéëçöèåß èÝìáôá ðïõ áöïñïýí ôéò áíáâáèìßóåéò ðïõ Ý÷ïõí ãßíåé Ýêäïóç 5.0 ôçò Java. Ôá èÝìáôá áõôÜ åßíáé: ç íÝá êëÜóç Scanner ãéá åßóïäï áðü ôï ðëçêôñïëüãéï êáé åßóïäï áðü áñ÷åßá, êáëýðôåôáé åêôåíþò ï ãåíéêåõìÝíïò ðñïãñáììáôéóìüò ï ïðïßïò åðéôñÝðåé ôç ÷ñÞóç ðáñáìåôñéêÜ ïñéæüìåíùí ôýðùí äåäïìÝíùí, ïé áíáâáèìßóåéò ðïõ Ý÷ïõí ãßíåé óôç âéâëéïèÞêç Swing ôçò Ýêäïóçò 5.0, ç áõôüìáôç óõóêåõáóßá (boxing) êáé áðïóõóêåõáóßá (unboxing), ï íÝïò âñü÷ïò for-each (ðïõ ïíïìÜæåôáé êáé âåëôéùìÝíïò âñü÷ïò for), ïé ôýðïé áðáñßèìçóçò (enumerated types), ïé óôáôéêÝò åéóáãùãÝò (static imports), ïé ìÝèïäïé ìå ìåôáâëçôü ðëÞèïò ïñéóìÜôùí, êáé ïé óõíáëëïßùôïé åðéóôñåöüìåíïé ôýðïé (covariant return types). Óôçí Ýêäïóç áõôÞ åðßóçò Ý÷ïõí áíáíåùèåß êáé Ý÷ïõí ðñïóôåèåß ðïëõÜñéèìåò íÝåò åñãáóßåò ðñïãñáììáôéóìïý.

Ï×É ÌÇ ÔÕÐÉÊÏ ËÏÃÉÓÌÉÊÏ Ç Java äå äéáèÝôåé êáìßá ôõðéêÞ êëÜóç ãéá åýêïëç åßóïäï êïíóüëáò (console input). Áõôü ïäçãåß êÜðïéïõò óõããñáöåßò, óõìðåñéëáìâáíïìÝíïõ êáé ôïõ åáõôïý ìïõ óå ðñïçãïýìåíá âéâëßá, óôï íá ðáñÝ÷ïõí ìéá ìç ôõðéêÞ êëÜóç ôçò Java ãéá åßóïäï êïíóüëáò. Áõôü Ý÷åé áðïäåé÷èåß ðùò äåí åßíáé êáèüëïõ ðñïóöéëÝò óôïõò äéäÜóêïíôåò ôïõ áíôéêåéìÝíïõ. Ôï âéâëßï áõôü äåí áðáéôåß ôÝôïéïõ åßäïõò ìç ôõðéêü ëïãéóìéêü. Ôï ßäéï ôï âéâëßï üíôùò ðáñÝ÷åé ìéá ôÝôïéá êëÜóç ãéá åýêïëç åßóïäï êïíóüëáò, êáèþò óå êÜðïéïõò äéäÜóêïíôåò áñÝóåé ç ÷ñÞóç áõôïý ôïõ ëïãéóìéêïý, ðáñüëá áõôÜ üìùò, åßíáé áðïëýôùò ðñïáéñåôéêü. Óå êáíÝíá óçìåßï ôçò ýëçò Þ ðáñÜäåéãìá ðñïãñáììáôéóìïý äåí ááðéôåßôáé ç êëÜóç áõôÞ ãéá åßóïäï êïíóüëáò. Ôá ðñïãñÜììáôá ðïõ ðáñÝ÷ïíôáé ùò ðáñáäåßãìáôá ðñïãñáììÜôùí Ý÷ïõí ãßíåé ÷ñçóéìïðïéþíôáò ôéò ôõðéêÝò êëÜóåéò ôçò Java, ïé ïðïßåò åßíáé äéáèÝóéìåò óå êÜèå åãêáôÜóôáóç ôçò Java.


vi

Ðñüëïãïò

ÊÁËÕØÇ ÔÇÓ ÅÊÄÏÓÇÓ 5.0 ÔÇÓ JAVA H Ýêäïóç áõôÞ, Ý÷åé áíáâáèìéóôåß êáé Ý÷åé åðåêôáèåß þóôå íá êáëýðôåé ðëÞñùò ôá ÷áñáêôçñéóôéêÜ ôçò Java ðïõ åßíáé êáéíïýñéá óôçí Ýêäïóç 5.0. Ç äéá÷åßñéóç ôçò åéóüäïõ áðü ôï ðëçêôñïëüãéï êáé ôçò åéóüäïõ áðü áñ÷åßá Ý÷åé åðåêôáèåß ãéá íá ÷ñçóéìïðïéåßôáé ç íÝá êëÜóç Scanner, êáé Ý÷åé ðñïóôåèåß Ýíá íÝï êåöÜëáéï ðïõ áíáöÝñåôáé óôï ãåíéêåõìÝíï ðñïãñáììáôéóìü. ¢ëëá êåöÜëáéá Ý÷ïõí áíáâáèìéóôåß þóôå íá áíôáðïêñßíïíôáé óôï ãåíéêåõìÝíï ðñïãñáììáôéóìü. ÅðéðëÝïí Ý÷ïõí ðñïóôåèåß ôá ðáñáêÜôù èÝìáôá êáé åðåêôÜóåéò, ðïõ óõíïäåýïõí ôçí Ýêäïóç 5.0 ôçò Java: Ý÷åé åðåêôáèåß ç êÜëõøç ôçò âéâëéïèÞêçò Swing ãéá íá õðïóôçñßæåé ôéò áëëáãÝò ðïõ ðåñéëáìâÜíåé ç Ýêäïóç 5.0, Ý÷åé ðñïóôåèåß ýëç ãéá ôçí áõôüìáôç óõóêåõáóßá (boxing) êáé áðïóõóêåõáóßá (unboxing), ôï íÝï âñü÷ï for-each (ðïõ ïíïìÜæåôáé êáé âåëôéùìÝíïò âñü÷ïò for), ôïõò ôýðïõò áðáñßèìçóçò (enumerated types), ôéò óôáôéêÝò åéóáãùãÝò (static imports), ôéò ìåèüäïõò ìå ìåôáâëçôü ðëÞèïò ïñéóìÜôùí, êáé ôïõò óõíáëëïßùôïõò åðéóôñåöüìåíïõò ôýðïõò (covariant return types).

ÁÍÔÉÊÅÉÌÅÍÏÓÔÑÅÖÇÓ ÐÑÏÃÑÁÌÌÁÔÉÓÌÏÓ Ôï âéâëßï áõôü ðáñÝ÷åé åêôåíÞ êÜëõøç ôçò åíèõëÜêùóçò, ôçò êëçñïíïìéêüôçôáò êáé ôïõ ðïëõìïñöéóìïý üðùò áõôÝò ðñáãìáôïðïéïýíôáé óôç ãëþóóá ôçò Java. Ôá êåöÜëáéá ðïõ áöïñïýí ôçí áíÜðôõîç ãñáöéêþí äéåðáöþí ÷ñÞóôç ìå ôç âéâëéïèÞêç Swing ðñïóöÝñïõí êÜëõøç êáé åêôåíÞ åîÜóêçóç ìå ôïí êáèïäçãïýìåíï áðü óõìâÜíôá ðñïãñáììáôéóìü (event driven programming). ¸íá êåöÜëáéï áöéåñùìÝíï óôç UML êáé óå ðñüôõðá ðñïóöÝñåé åðéðñüóèåôç êÜëõøç èåìáôéêþí åíïôÞôùí ðïõ ó÷åôßæïíôáé ìå ôïí áíôéêåéìåíïóôñåöÞ ðñïãñáììáôéóìü.

ÅËÁÓÔÉÊÏÔÇÔÁ ÓÔÇ ÈÅÌÁÔÉÊÇ ÄÏÌÇ Ôï âéâëßï áõôü åðéôñÝðåé óôïõò äéäÜóêïíôåò åõåëéîßá óôçí áíáäüìçóç ôïõ õëéêïý. Áõôü åßíáé áðáñáßôçôï áí Ýíá âéâëßï ðñüêåéôáé íá ÷ñçóéìïðïéçèåß ùò åã÷åéñßäéï áíáöïñÜò. Åðßóçò åßíáé ãñáììÝíï óýìöùíá ìå ôç öéëïóïößá êáôÜ ôçí ïðïßá ôá âéâëßá ðñïóáñìüæïíôáé óôï ðñïóùðéêü ýöïò ôïõ åêÜóôïôå äéäÜóêïíôá êáé äåí ôïí äåóìåýïõí ìå ôéò ðñïóùðéêÝò ðñïôéìÞóåéò ôïõ óõããñáöÝá üóï áíáöïñÜ ôç èåìáôéêÞ äïìÞ. ¸÷ïíôáò áõôü êáôÜ íïõ, óôçí áñ÷Þ êÜèå êåöáëáßïõ õðÜñ÷åé ìéá åíüôçôá ìå ðñïáðáéôïýìåíåò ãíþóåéò. ÁõôÞ ç åíüôçôá ðåñéãñÜöåé ôçí ýëç ðïõ èá ðñÝðåé íá êáëõöèåß ðñéí ðñï÷ùñÞóåé êáíåßò óôç ìåëÝôç êÜèå åíüôçôáò ôïõ êåöáëáßïõ. Ïé åíüôçôåò ðïõ óçìåéþíïíôáé ìå áóôåñßóêï, êáé ïé ïðïßåò åðåîÞãïõíôáé ðáñáêÜôù, ðñïóöÝñïõí åðéðñüóèåôç åõåëéîßá.

ÅÍÏÔÇÔÅÓ ÐÏÕ ÓÇÌÅÉÙÍÏÍÔÁÉ ÌÅ ÁÓÔÅÑÉÓÊÏ ÊÜèå êåöÜëáéï ðåñéëáìâÜíåé Ýíá ðëÞèïò åíïôÞôùí ðïõ óçìåéþíïíôáé ìå áóôåñßóêï (I), ïé ïðïßåò ìðïñïýí íá èåùñçèïýí ðñïáéñåôéêÝò. Ç ýëç ðïõ ðåñéëáìâÜíïõí ïé åíüôçôåò áõôÝò ìðïñåß íá èåùñçèåß äýóêïëç áðü ôïõò áñ÷Üñéïõò êáé ìðïñåß íá ðáñáëçöèåß ÷ùñßò íá áõôü íá Ý÷åé åðßðôùóç óôç óõíå÷Þ ñïÞ ôïõ êåéìÝíïõ. Ãéá ôïõò ðéï ðñï÷ùñçìÝíïõò öïéôçôÝò, ïé åíüôçôåò ìå áóôåñßóêï äå èá ðñÝðåé íá èåùñïýíôáé ðñïáéñåôéêÝò.

ÐÑÏÓÉÔÏ ÓÔÏÕÓ ÖÏÉÔÇÔÅÓ Äåí åßíáé áñêåôü ãéá Ýíá âéâëßï íá ðáñïõóéÜæåé ôá óùóôÜ èÝìáôá ìå ôç óùóôÞ ôïõò óåéñÜ. Äåí áñêåß åðßóçò íá åßíáé óáöÝò êáé áêñéâÝò êáôÜ ôçí áíÜãíùóç ôïõ áðü êÜðïéï äéäÜóêïíôá Þ áðü êÜðïéïí Üëëï åéäéêü. Ç ýëç ðñÝðåé íá ðáñïõóéÜæåôáé ìå ôñüðï ðñïóéôü ãéá êÜðïéïí ðïõ äåí åßíáé áêüìá ãíþóôçò ôçò. ¼ðùò êáé ôá õðüëïéðá åã÷åéñßäéá ôïõ óõããñáöÝá ðïõ Ý÷ïõí áðïäåé÷èåß éäéáßôåñá äçìïöéëÞ óôïõò öïéôçôÝò, ôï âéâëßï áõôü ãñÜöôçêå þóôå íá åßíáé áíôßóôïé÷á öéëéêü êáé ðñïóéôü.

ÐÅÑÉËÇØÅÉÓ ÓÅ ÐËÁÉÓÉÁ Ãéá êÜèå óçìáíôéêü óçìåßï ðáñÝ÷åôáé áíôßóôïé÷ç ðåñßëçøç óå ðëáéóéùìÝíç åíüôçôá. Ïé åíüôçôåò áõôÝò åßíáé äéÜóðáñôåò óå êÜèå êåöÜëáéï. Åîõðçñåôïýí óôçí ðåñéëçðôéêÞ áðüäïóç ôçò ýëçò, êáé ùò ðçãÝò Üìåóçò áíáöïñÜò. Åðßóçò ìðïñïýí íá áîéïðïéçèïýí ãéá ôç ãñÞãïñç åêìÜèçóç ôïõ óõíôáêôéêïý ôçò Java áíáöïñéêÜ ìå ôá ÷áñáêôçñéóôéêÜ ôçò åêåßíá ðïõ ï áíáãíþóôçò ãíùñßæåé Þäç óå ãåíéêÝò ãñáììÝò, áëëÜ ÷ñåéÜæåôáé íá ìÜèåé ðåñéóóüôåñåò ëåðôïìÝñåéåò ãéá ôïí ôñüðï ìå ôïí ïðïßï õëïðïéïýíôáé áõôÜ óôç Java.

ÁÓÊÇÓÅÉÓ ÁÕÔÏÁÎÉÏËÏÃÇÓÇÓ ÊÜèå êåöÜëáéï ðåñéëáìâÜíåé Ýíá ìåãÜëï áñéèìü ÁóêÞóåùí Áõôïáîéïëüãçóçò óå óôñáôçãéêÜ óçìåßá ôïõ êåöáëáßïõ. Óôï ôÝëïò êÜèå êåöáëáßïõ äßíïíôáé ïëïêëçñùìÝíåò áðáíôÞóåéò ãéá üëåò ôéò ÁóêÞóåéò Áõôïáîéïëüãçóçò.

ÁËËÁ ×ÁÑÁÊÔÇÑÉÓÔÉÊÁ Óå êÜèå êåöÜëáéï ðáñáôßèåíôáé åíüôçôåò ìå êñõììÝíåò äõóêïëßåò, åíüôçôåò ìå ðñïãñáììáôéóôéêÝò óõìâïõëÝò, êáèþò êáé ðáñáäåßãìáôá ïëïêëçñùìÝíùí ðñïãñáììÜôùí ãéá ôá ïðïßá ðáñÝ÷ïíôáé äåßãìáôá ôçò åéóüäïõ-åîüäïõ ôïõò. ÊÜèå êåöÜëáéï ïëïêëçñþíåôáé ìå ìéá ðåñéëçðôéêÞ åíüôçôá êáèþò êáé Ýíá óýíïëï åñãáóéþí ðñïãñáììáôéóìoý êáôÜëëçëùí ãéá öïéôçôÝò.


Ðñüëïãïò

vii

H ÄÉÁÄÉÊÔÕÁÊÇ ÐÇÃÇ ÄÉÄÁÊÔÉÊÙÍ ÐËÇÑÏÖÏÑÉÙÍ CODEMATE Ôï CodeMate åßíáé ìéá äéáäéêôõáêÞ ðçãÞ ðëçñïöïñéþí ðïõ ðñïóöÝñåé äéäáêôéêÞ õðïóôÞñéîç êáé áîéïëüãçóç ôçò åñãáóßáò ôïõ öïéôçôÞ óôéò åñãáóßåò ðñïãñáììáôéóìïý. Ïé êþäéêåò üðùò åðßóçò êáé åðéëåãìÝíåò åñãáóßåò ðñïãñáììáôéóìïý ôçò Ýêäïóçò áõôÞò Ý÷ïõí åíóùìáôùèåß ðëÞñùò óôï óýóôçìá CodeMate. Ìå ôç ÷ñÞóç ôïõ óõóôÞìáôïò CodeMate, Ýíáò öïéôçôÞò ìðïñåß íá âñßóêåé õðïäåßîåéò ãéá ôéò åñãáóßåò ðñïãñáììáôéóìïý, íá ãñÜöåé êáé íá ìåôáãëùôôßæåé ìéá åñãáóßá ôïõ, êáé ôïõ ðáñÝ÷ïíôáé óôïé÷åßá ðïõ áöïñïýí ôïí ôñüðï ìå ôïí ïðïßï ðñÝðåé íá áíôéìåôùðßæåé ôá ìçíýìáôá óöÜëìáôïò ìåôáãëþôôéóçò. ¼ëá áõôÜ íá ìðïñïýí íá ãßíïíôáé ìÝóù ôïõ Äéáäéêôýïõ áðü ïðïéïíäÞðïôå õðïëïãéóôÞ Ý÷åé ðñüóâáóç óôï Äéáäßêôõï. Ïé äéäÜóêïíôåò ìðïñïýí íá ðáñáêïëïõèïýí ôçí ðñüïäï êÜèå öïéôçôÞ óôéò åñãáóßåò ðñïãñáììáôéóìïý ôïõ êýêëïõ ìáèçìÜôùí ôïõò. Ç åããñáöÞ óôï óýóôçìá ãßíåôáé åðß ðëçñùìÞ ìÝóù ôïõ Äéáäéêôýïõ. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôï óýóôçìá CodeMate, åðéóêåöôåßôå ôçí éóôïóåëßäá http://www.aw-bc.com/ codemate http://www.aw-bc.com/codemate

ÕËÉÊÏ ÕÐÏÓÔÇÑÉÎÇÓ Ôï áêüëïõèï õëéêü õðïóôÞñéîçò åßíáé äéáèÝóéìï óå üëïõò ôïõò ÷ñÞóôåò áõôïý ôïõ âéâëßïõ: n ÅñùôÞìáôá áõôïáîéïëüãçóçò n Ï ðçãáßïò êþäéêáò áðü ôï âéâëßï. n ¸íá äùñåÜí áíôßãñáöï ôçò ðëáôöüñìáò áíÜðôõîçò ëïãéóìéêïý (Software Development Kit, SDK) ôçò Ýêäïóçò 5.0 ôçò Java, ðïõ óõìðåñéëáìâÜíåé ôï ìåôáãëùôéóôÞ 5.0 ôçò Java.

CD Ôï CD ðïõ óõíïäåýåé áõôü ôï âéâëßï ðåñéÝ÷åé: n Ôïí ðçãáßï êþäéêá áðü üëá ôá ó÷Þìáôá ðïõ ðáñïõóéÜæïõí êþäéêá óå áõôü ôï âéâëßï. n ¸íá áíôßãñáöï ôçò ðëáôöüñìáò áíÜðôõîçò ëïãéóìéêïý ôçò Ýêäïóçò 5.0 ôçò Java ðïõ óõìðåñéëáìâÜíåé ôï ìåôáãëùôôéóôÞ 5.0 ôçò Java. n ¸íá äïêéìáóôéêü áíôßãñáöï ôïõ ïëïêëçñùìÝíïõ ðåñéâÜëëïíôïò áíÜðôõîçò åöáñìïãþí (Integrated Development Environment, IDE) TextPad ãéá Windows.

ÐÙÓ ÈÁ ÁÐÏÊÔÇÓÅÔÅ ÔÇ JAVA Ôï CD ðïõ óõíïäåýåé áõôü ôï âéâëßï ðåñéëáìâÜíåé Ýíá äùñåÜí áíôßãñáöï ôçò ðëáôöüñìáò áíÜðôõîçò åöáñìïãþí Java 5.0 Software Development Kit. Áõôü ðåñéëáìâÜíåé Ýíá ìåôáãëùôôéóôÞ Java 5.0. Åðßóçò ÷ñåéÜæåóôå Ýíá ïëïêëçñùìÝíï ðåñéâÜëëïí áíÜðôõîçò åöáñìïãþí Þ ôïõëÜ÷éóôïí Ýíá ðñüãñáììá óýíôáîçò êåéìÝíïõ (text editor). Ùóôüóï, Ý÷ïõìå êáôáëÞîåé ðùò Ýíá áðëïýóôåñï IDE èá ÷ñçóßìåõå ðåñéóóüôåñï ãéá ôïõò áñ÷Üñéïõò öïéôçôÝò êáèþò ðáñïõóéÜæåé ëéãüôåñá óôïé÷åßá ðïõ ìðïñåß íá áðïóðÜóïõí ôçí ðñïóï÷Þ ôïõò áðü ôï Ýñãï ôïõ ó÷åäéáóìïý ðñïãñáììÜôùí. Åìåßò ðñïôåßíïõìå ôï ðåñéâÜëëïí TextPad Þ ïðïéïäÞðïôå ðáñüìïéï áðëü ðåñéâÜëëïí áíÜðôõîçò åöáñìïãþí. ¸íá äùñåÜí äïêéìáóôéêü áíôßãñáöï ôïõ TextPad ãéá ôá Windows óõìðåñéëáìâÜíåôáé óôï CD ðïõ óõíïäåýåé áõôü ôï âéâëßï.

ÅÕ×ÁÑÉÓÔÉÅÓ ÐïëõÜñéèìá ðñüóùðá Ý÷ïõí óõìâÜëåé óôç äçìéïõñãßá áõôïý ôïõ âéâëßïõ ìå ôçí ðïëýôéìç âïÞèåéá êáé óõìðáñÜóôáóÞ ôïõò: Ç ðñþçí åêäüôñéÜ ìïõ Susan Hartman ôçò Addison-Wesley ðïõ ðñþôç óõíÝëáâå ôçí éäÝá ãéá ôï âéâëßï áõôü êáé ðïõ óõíåñãÜóôçêå ìáæß ìïõ óôéò ðñþôåò åêäüóåéò. Ï ôùñéíüò ìïõ åêäüôçò Matt Goldstein ðïõ ìå õðïóôÞñéîå êáé õðÞñîå ðçãÞ Ýìðíåõóçò ãéá ôçí áíáèåþñçóç, åðáíåîÝôáóç êáé ïëïêëÞñùóç áõôÞò ôçò äåýôåñçò Ýêäïóçò. Ôïõò Katherine Harutunian, Bethany Tidd, Sarah Barlett, Joyce Wells, Michelle Brown, êáé Üëëïõò åîáéñåôéêïýò áíèñþðïõò ôçò Addison-Wesley ðïõ õðÞñîáí ìéá óõíå÷Þò ðçãÞ õðïóôÞñéîçò êáé åíèÜññõíóçò. Ç Meghan James êáé ï Daniel Rausch ôïõ åêäïôéêïý ïßêïõ Argosy åñãÜóôçêáí áêïýñáóôá, åðéäÝîéá êáé ìå ìåãÜëç ÷áñÜ ãéá íá åôïéìáóôåß Ýãêáéñá ôï âéâëßï áõôü. Ç Patty Mathani çãÞèçêå ôçò ïìÜäáò ðáñáãùãÞò ôçò AddisonWesley. ÕðÞñîå ðçãÞ Ýìðíåõóçò êáé áíáðüóðáóôçò âïÞèåéáò. Ç óõíåñãáóßá ìå ôçí Patty ìåôÝôñåøå ìéá êïõñáóôéêÞ êáé âáñåôÞ åñãáóßá óå ìéá åõ÷Üñéóôç åñãáóßá. Ïé áêüëïõèïé êñéôÝò Ýêáíáí äéïñèþóåéò êáé ðñïôÜóåéò ãéá ôçí ðñþôç Ýêäïóç ôïõ âéâëßïõ. Ç óõíåéóöïñÜ ôïõò óõíå÷ßóôçêå êáé óôç äåýôåñç Ýêäïóç. Ôïõò åõ÷áñéóôþ üëïõò. ÊáôÜ áëöáâçôéêÞ óåéñÜ åßíáé ïé áêüëïõèïé: Kevin Bierre Rochester Institute of Technology Stephen Chandler NW Shoals Community College Massoud Ghyam University of Southern California Nigel Gwee Louisian State University Sridhar P. Nerur The University of Texas at Arlington David Primeaux VA Commonwealth University Riyaz Sikora The University of Texas at Arlington


viii

Ðñüëïãïò

Ronald F. Taylor Wright State University Jim Adams Chandler-Gilbert Community College Gerald W. Adkins Georgia College & State University Dr. Bay Arinze Drexel University Prof. Richard G. Baldwin Austin Community College Jon Bjornstad Gavilan College Adrienne Decker University of Buffalo Arthur Geis College of DuPage Judy Hankins Middle Tennessee State University Chris Howard DeVry University Eliot Jacobson University of california, Santa Barbara Balaji Janamanchi Texas Tech University Suresh Kalathur Boston University Dr. Clifford R. Kettemborough IT Consultant and Professor Frank Levey Manatee Community College Xia Lin Drexel University Mark M. Meysenburg Doane College Hoang M. Nguyen Deanza College Prof. Bryson R. Payne North Georgia College & State University W. Brent Seales University of Kentucky Jeff Six University of Delaware Xueqing (Clare) Tang Governors State University Natalie S. Wear University of South Florida Dale Welch University of West Florida Wook-Sung Yoo Gannon University Ï Kenrick Mock (ÐáíåðéóôÞìéï ôçò ÁëÜóêá) áíáâÜèìéóå ôéò åñãáóßåò ðñïãñáììáôéóìïý óõìðåñéëáìâÜíïíôáò ðïëëÝò êáéíïýñéåò åñãáóßåò êáé íÝåò ëýóåéò óå ðáëáéüôåñá ðñïâëÞìáôá. Ôïí åõ÷áñéóôþ ãéá ôçí ðñáãìáôéêÜ Üñéóôç åñãáóßá ôïõ. ¸íá ìåãÜëï åõ÷áñéóôþ óôïí Rick Ord ï ïðïßïò åðéèåþñçóå ïëüêëçñç ôç ðñþôç Ýêäïóç êáé ôéò âåëôéùìÝíåò åíüôçôåò áõôÞò ôçò äåýôåñçò Ýêäïóçò. ¸êáíå ëåðôïìåñåßò êáé ðïëý ÷ñÞóéìåò åéóçãÞóåéò ãéá ôç âåëôßùóç ôïõ âéâëßïõ. Ç äéïñáôéêüôçôÜ ôïõ óõíÝâáëå óçìáíôéêÜ ó÷åäüí óå êÜèå êïììÜôé ôïõ âéâëßïõ.

Walter Savitch http://www.cse.ucsd.edu/users/savitch/ wsavitch@ucsd.edu


Ìéá Åðéóêüðçóç ôùí ×áñáêôçñéóôéêþí ôïõ Âéâëßïõ 10

ÊÅÖÁËÁÉÏ 1

Îåêéíþíôáò

Ðëáßóéá ÐåñéëÞøåùí éäéáßôåñá ìåôáöåñôü. Áðü ôç óôéãìÞ ðïõ èá ìåôáãëùôôßóåôå ôï ðñüãñáììá Java óå êþäéêá-byte, ìðïñåßôå íá ÷ñçóéìïðïéåßôå áõôü ôïí êþäéêá-byte óå êÜèå õðïëïãéóôÞ. Áí ÷ñåéáóôåß íá åêôåëÝóåôå ôï ðñüãñáììÜ óáò óå êÜðïéï Üëëï åßäïò õðïëïãéóôÞ, äå ÷ñåéÜæåôáé íá ôï ìåôáãëùôôßæåôå îáíÜ. Áõôü óçìáßíåé üôé ìðïñåßôå íá óôåßëåôå ìÝóù Äéáäéêôýïõ ôïí êþäéêá-byte óå Ýíáí Üëëï õðïëïãéóôÞ êáé íá ôïí êÜíåôå íá ôñÝîåé ðïëý åýêïëá óôïí Üëëï áõôü õðïëïãéóôÞ. Áõôüò åßíáé êáé Ýíáò áðü ôïõò ëüãïõò ãéá ôïõò ïðïßïõò ç ãëþóóá Java åßíáé éäáíéêÞ ãéá åöáñìïãÝò Äéáäéêôýïõ. ÖõóéêÜ, ï êÜèå åßäïõò õðïëïãéóôÞò èá ðñÝðåé íá äéáèÝôåé ôï äéêü ôïõ äéåñìçíÝá êþäéêá-byte, üìùò Ýíáò äéåñìçíÝáò åßíáé Ýíá ðïëý áðëü ðñüãñáììá óõãêñéôéêÜ ìå Ýíáí ìåôáãëùôôéóôÞ.

Ôá ðëáßóéá áõôÜ ðáñÝ÷ïõí ìéá óýíôïìç óýíïøç ôùí ðéï óçìáíôéêþí èåìÜôùí êÜèå êåöáëáßïõ, ôïíßæïíôáò êáé åðéóçìáßíïíôáò âáóéêÝò Ýííïéåò óå üëï ôï âéâëßï. Ïé áíáãíþóôåò áíáêáëýðôïõí ðùò ðñüêåéôáé ãéá ìéá åý÷ñçóôç, ãñÞãïñç ðçãÞ áíáöïñÜò ãéá ôçí óýíôáîç êáé ôá ÷áñáêôçñéóôéêÜ ôçò Java.

ÊÊþ þä äééêêááòò BByyttee ((BByyttee--CCooddee)) O ìåôáãëùôôéóôÞò Java ìåôáöñÜæåé ôï ðñüãñáììá Java óå ìéá ãëþóóá ðïõ ïíïìÜæåôáé êþäéêáò-byte ï êþäéêáò áõôüò áðïôåëåß ìéá ãëþóóá ìç÷áíÞò ãéá Ýíá öáíôáóôéêü õðïëïãéóôÞ. Ç ìåôÜöñáóç áõôïý ôïõ êþäéêá-byte óå ãëþóóá ìç÷áíÞò ãéá Ýíá ïðïéïäÞðïôå åßäïò õðïëïãéóôÞ åßíáé êÜôé áðëü. Ôï êÜèå åßäïò õðïëïãéóôÞ Ý÷åé ôï äéêü ôïõ ìåôáãëùôôéóôÞ ï ïðïßïò ìåôáöñÜæåé êáé åêôåëåß ôéò åíôïëÝò ôïõ êþäéêá-byte.

¼ôáí ìåôáãëùôôßæåôå êáé åêôåëåßôå Ýíá ðñüãñáììá ãñáììÝíï óå Java, óõíÞèùò äåí áíôéëáìâÜíåóôå êáí ðùò ôï ðñüãñáììÜ óáò ìåôáöñÜæåôáé ðñþôá óå êþäéêá-byte êáé äåí ìåôáöñÜæåôáé ???????????? Üìåóá57óå êþäéêá ãëþóóáò ìç÷áíÞò. ÓõíÞèùò äßíåôå äõï åíôïëÝò, ôç ìéá ãéá ôç ìåôáãëþôôéóç ôïõ ðñïãñÜììáôüò óáò (óå êþäéêá-byte) êáé ôçí Üëëç ãéá ôçí åêôÝëåóç ôïõ ðñïãñÜììáôüò óáò. Ç åíôïëÞ åêôÝëåóçò ôïõ ðñïãñÜììáôïò (run ÁóêÞóåéò Áõôïáîéïëüãçóçò êáé command) åíåñãïðïéåß ôï äéåñìçíåõôÞ ôçò Java þóôå íá ìåôáöñÜóåé ôïí êþäéêá byte. ÁÓÊÇÓÅÉÓ ÁÕÔÏÁÎÉÏËÏÃÇÓÇÓ ¼ôáí ÷ñçóéìïðïéåßôå Ýíá ìåôáãëùôôéóôÞ, ç ïñïëïãßá ìðïñåß íá óáò ìðåñäÝøåé ÁðáíôÞóåéò 1. ÅÜí ç ðáñáêÜôù ðñüôáóç ÷ñçóéìïðïéïýíôáí óå Ýíá ðñüãñáììá Java, êáèþò áõôü èáôüóï ç åßóïäïò, üóï êáé ç Ýîïäïò ôïõ ðñïãñÜììáôïò ìåôáãëþôôéóçò ðçãáßï ëßãï, ÊÅÖÁËÁÉÏåß÷å 20 ùò áðïôÝëåóìá Ç Java Äåí ¸÷åé ÔÝëïò êÜôé óôçí ïèüíç ôïõ õðïëïãéóôÞ. ðñüãñáììá Ôéáðïôåëïýí íá ôõðùèåß èá Þôáí áõôü; åðßóçò ðñïãñÜììáôá. ÏôéäÞðïôå âëÝðåôå áðïôåëåß Ýíá åßäïò ðñïãñÜìðçãáßïò ÓôñáôçãéêÜ ôïðïèåôçìÝíåò ìÝóá óå êþäéêáò ìáôïò. Ãéá íá åßìáóôå óáöåßò ùò ðñïò ôï ðñüãñáììá óôï ïðïßï áíáöåñüìáóôå, èá System.out.println("Java is not a drink."); åéóüäïõ,êåöÜëáéï, ôï ïðïßï óôçí ïé ðåñßðôùóÞ ìáò èá åßíáé ÁóêÞóåéò ôåëéêü ïíïìÜæïõìå ôï ðñüãñáììá êÜèå 2. Äþóôå ìéá ðñüôáóç, Þ ðñïôÜóåéò ðïõ èá ìðïñïýóáí íá ãñáöïýí óå Ýíá ðñüãñáììá ðñüãñáììá Java, ðçãáßï ðñüãñáììá (source program), Þ ðçãáßï êþäéêá (source Á Ó Ê Ç Ó Å É Ó Á Õ Ô Ï Á Î É Ï Ë Ï Ã Ç Ó Ç Ó Áõôïáîéïëüãçóçò óôïõò ôåëéêüò code), ðñüãñáììá Java ðïõ íá ôõðþíåé óôçí ïèüíç ôïõ õðïëïãéóôÞ ôéò ðáñáêÜôù åíþ ôï ðñüãñáììá ÷áìçëïý åðéðÝäïõ ãëþóóáò ðïõðñïóöÝñïõí ðáñÜãåé ï ìåôáãëùôôé5. Íá äþóåôå ìéá åíôïëÞ SQL ðïõ íá ðáñÜãåé Ýíáíêþäéêáò ðßíáêá ìåóôÞò, ôßôëïõò êáé ðñïôÜóåéò: ôåëéêü ðñüãñáììá (object program), Þ ôåëéêü êþäéêá èáâéâëßùí ôï ïíïìÜæïõìå áíáãíþóôåò ôçí åõêáéñßá íá ôïõò áíôßóôïé÷ïõò óõããñáöåßò ìå ôïõò êùäéêïýò ôïõò áðü ôïí ðßíáêá ResultÇôïõ (object code). ëÝîç êþäéêáò (code) óçìáßíåé áðëÜ Ýíá ðñüãñáììá Þ Ýíá ôìÞìá I like Java. áîéïëïãÞóïõí ôéò ãíþóåéò ôïõò óå Ó÷Þìáôïò 20.5 êáé áðü Ýíáí áðü ôïõò ðßíáêåò ôïõ Ó÷Þìáôïò Íá áêïëïõåíüò20.4. ðñïãñÜììáôïò. You like tea. èÞóåôå ôï ðáñÜäåéãìá ìéáò åíôïëÞò SQL ðïõ äßíåôáé óôï êåßìåíï.

åêôÝëåóç ôïõ ðñïãñÜììáôïò

1126

ÖÏÑÔÙÔÇÓ ÊËÁÓÇÓ

âáóéêÜ èÝìáôá.

3. Íá ãñÜøåôå Ýíá ïëïêëçñùìÝíï ðñüãñáììá óå Java ðïõ íá ÷ñçóéìïðïéåß ÖÏÑÔÙÔÇôçÓ ÊËÁÓÇÓ I I System.out.println þóôå üôáí åêôåëåßôáé íá ôõðþíåé óôçí ïèüíç ¸íá ôçí ðáñáêÜôù ðñüãñáììá Java ÷ùñßæåôáé óå ìéêñüôåñá ôìÞìáôá ðïõ ïíïìÜæïíôáé êëÜóåéò ðñüôáóç: öïñôùôÞò (classes), êáé óõíÞèùò ï ïñéóìüò êÜèå êëÜóçò âñßóêåôáé óå Ýíá îå÷ùñéóôü áñ÷åßï

ÐÅÑÉËÇØÇ ÊÅÖÁËÁÉÏY

êëÜóçò ðïõ ìåôáãëùôôßæåôáé ÷ùñéóôÜ. ÐñïêåéìÝíïõ íá ôñÝîåôå ôï ðñüãñáììÜ óáò, åßíáé Hello World! áðáñáßôçôï íá óõíäåèïýí ìåôáîý ôïõò ïé êþäéêåò-byte ãéá ôéò äéáöïñåôéêÝò áõôÝò n ¸íá íÞìá åßíáéüôéìéá õðïëïãéóôéêÞ äéåñãáóßá. ¸íá ðñüãñáììá ÐñÝðåé íá óçìåéùèåß äåíáíåîÜñôçôç åßíáé áðáñáßôçôï íá Ý÷åôå êáôáíïÞóåé ðëÞñùò üëåò êëÜóåéò. Ç óýíäåóç ðñáãìáôïðïéåßôáé ìå ôç âïÞèåéá åíüò ðñïãñÜììáôïò ðïõ Java ìðïñåß Ý÷åé ðïëëáðëÜ íÞìáôá. ôéò ëåðôïìÝñåéåò ôïõíá ðñïãñÜììáôïò ãéá íá ãñÜøåôå ôï ðñüãñáììá. Ìðïñåßôå ðïëý öïñôùôÞò êëÜóçò (class loader). ÔõðéêÜ ç óýíäåóç áõôÞ ãßíåôáé áõôïïíïìÜæåôáé n Ãéá ôçí ðáñáãùãÞ ðïëëáðëþí íçìÜôùí ÷ñçóéìïðïéåßôáé ç êëÜóç Thread. áðëÜ íá áêïëïõèÞóåôå ôï ìïíôÝëï ôïõ ðñïãñÜììáôïò ôïõ Ó÷Þìáôïò 1.1. ìÜôùò, êáé ãéá ôï ëüãï áõôü óõíÞèùò äå ÷ñåéÜæåôáé íá áó÷ïëåßóôå ìå áõôü. (Óå n Ç óôáôéêÞ ìÝèïäïò Thread.sleep åéóáãÜãåé ìéá ðáýóç óôï íÞìá ðïõ êáÜëëåò ãëþóóåò ðñïãñáììáôéóìïý, ôï ðñüãñáììá ðïõ áíôéóôïé÷åß óôï ðñüãñáììá ëåßôáé. öïñôùôÞ êëÜóçò Java ïíïìÜæåôáé óõíäÝôçò (linker)). n Ôï JavaBeans åßíáé Ýíá ðëáßóéï åñãáóßáò ãéá ôçí ðáñáãùãÞ óõóôáôéêþí Java ôá ïðïßá óõíäõÜæïíôáé åýêïëá ìå Üëëá óõóôáôéêÜÌ ÌJavaBeans ÅÅÔ ÔÁÁÃÃË ËÙ ÙÔÔãéá ÔÉÉÆÆôçí Ô ÏÍ Ï ÍÔÔÁÁÓÓ ÅÅÍ ÍÁÁ Ð ÐÑÑÏ ÏÃÃÑÑÁÁÌ ÌÌ ÌÁÁ ¹ ¹Ì ÌÉÉÁÁ ÊÊË ËÁÁÓÓÇ Ç JJAAVVAA ðáñáãùãÞ íÝùí åöáñìïãþí. ¼ðùò áíáöÝñèçêå êáé óôçí ðñïçãïýìåíç õðïåíüôçôá, Ýíá ðñüãñáììá Java ÷ùñßn ×ñçóéìïðïéþíôáò ôç âéâëéïèÞêç JDBC, ìðïñåßôå íá åéóÜãåôå åíôïëÝò âÜóåùí äåäïìÝíùí SQL óôïí êþäéêá ðïõ Ý÷åôå ãñÜøåé óå Java.

ÁÐÁÍÔÇÓÅÉÓ ÓÔÉÓ ÁÓÊÇÓÅÉÓ ÁÕÔÏÁÎÉÏËÏÃÇÓÇÓ 1. Ç êëÞóç ôçò ìåèüäïõ Thread.sleep ëáìâÜíåé ÷þñá ìÝóá óå Ýíá íÞìá. ÏðïéáäÞðïôå åíÝñãåéá óôç Java ëáìâÜíåé ÷þñá óå êÜðïéï íÞìá. ÊÜèå åíÝñãåéá ðïõ åêôåëåßôáé ýóôåñá áðü ôçí êëÞóç ìéáò ìåèüäïõ åíôüò åíüò óõãêåêñéìÝíïõ íÞìáôïò ëáìâÜíåé ÷þñá óå åêåßíï ôï íÞìá. Áêüìá êáé áí äå ãíùñßæåé ðïõ âñßóêåôáé, ç åíÝñãåéá ìéáò ìåèüäïõ ëáìâÜíåé ÷þñá åêåß ðïõ âñßóêåôáé ç êëÞóç ôçò ìåèüäïõ. ÅÜí, ãéá ðáñÜäåéãìá, åß÷áôå ÷áèåß êáé âãÜæáôå ìéá êñáõãÞ, äå èá ãíùñßæáôå ðïõ èá âñéóêüóáóôáí üìùò ç êñáõãÞ èá Ýâãáéíå áðü ôï óçìåßï ðïõ èá âñéóêüóáóôáí. 2. Ç êëÜóç Packer êëçñïíïìåß ôç ìÝèïäï start áðü ôç âáóéêÞ êëÜóç Thread. Äåí Ý÷åé ãßíåé õðÝñâáóç ôçò ìåèüäïõ start. Ç ìÝèïäïò start êáëåß ôç ìÝèïäï run. ¼ôáí üìùò ç start êáëåßôáé áðü Ýíá áíôéêåßìåíï ôçò êëÜóçò Packer, ÷ñçóéìïðïéåßôáé ï ïñéóìüò ôçò ìåèüäïõ run ôçò êëÜóçò Packer, êáé ü÷é ï ïñéóìüò ôçò ìåèüäïõ run ôçò êëÜóçò Thread. Áõôü áêñéâþò åííïåßôáé ùò êáèõóôåñçìÝíç äÝóìåõóç Þ ðïëõìïñöéóìüò. 3. ÄéáôÞñçóç óçìáßíåé üôé ç êáôÜóôáóç åíüò óõóôáôéêïý ìðïñåß íá áðïèçêåõôåß Ýôóé þóôå ôçí åðüìåíç öïñÜ ðïõ áõôü ôï óõóôáôéêü èá ÷ñçóéìïðïéçèåß èá ìðïñåß íá èõìÜôáé ôçí êáôÜóôáóç óôçí ïðïßá âñéóêüôáí. 4. Ôï ßäéï ðïõ ÷ñçóéìïðïéåßôáé óôï Swing êáé óôï AWT. 5. SELECT Result.Title, Names.Author, Result.Author_ID FROM Result, Names WHERE Result.Author_ID = Names.Author_ID

Óôï ôÝëïò êÜèå êåöáëáßïõ äßíïíôáé ëåðôïìåñåßò áðáíôÞóåéò.


Åßóïäïò Êïíóüëáò ìå ôç ×ñÞóç ÊëÜóçò Scanner

79

Ó÷Þìáôá ìå Êþäéêåò

Äåßãìá Åéóüäïõ áðü ôï Ðëçêôñïëüãéï

Ó÷Þìá 2.6 1

import java.util.Scanner;

2 3 4 5 6

public class ScannerDemo { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in);

ÊÜíåé ôçí êëÜóç Scanner äéáèÝóéìç óôï ðñüãñáììÜ óáò. Äçìéïõñãåß Ýíá áíôéêåßìåíï ôçò êëÜóçò Scanner êáé ôï ïíïìÜæåé keyboard.

7 8 9 10

System.out.println(“Enter the number of pods followed by”); System.out.println(“the number of peas in a pod:”); Ç êÜèå ìéá áðü ôéò ðñïôÜóåéò äéáâÜæåé int numberOfPods = keyboard.nextInt(); ìéá ôéìÞ ôýðïõ int áðü ôï int peasPerPod = keyboard.nextInt();

11

int totalNumberOfPeas = numberOfPods*peasPerPod;

12 13 14 15 16 17

System.out.print(numberOfPods + “ pods and “); System.out.println(peasPerPod + “ peas per pod.”); System.out.println(“The total number of peas = “ + totalNumberOfPeas);

ðëçêôñïëüãéï.

Óå üëï ôï âéâëßï õðÜñ÷ïõí Üöèïíåò ëßóôåò êþäéêá. ÊáôÜ ìÞêïò ôïõ êþäéêá ðáñïõóéÜæïíôáé ó÷üëéá ðïõ åðåîçãïýí ðéèáíþò ðåñßðëïêá Þ äýóêïëá óçìåßá ôïõ. Ïé óçìáíôéêÝò ãñáììÝò êþäéêá ôïíßæïíôáé êáé ç êùäéêïðïéçìÝíç ÷ñÞóç ÷ñùìÜôùí åðéôõã÷Üíåé Ýíáí ïðôéêü äéá÷ùñéóìü ìåôáîý ôùí ó÷ïëßùí (ðñÜóéíï ÷ñþìá) êáé ôùí äåóìåõìÝíùí ëÝîåùí (reserved words) (ìðëå ÷ñþìá).

} }

ÄÅÅÉÉÃÃÌÌÁÁ Ä Ä ÄÉÉÁÁËËÏÏÃÃÏÏÕÕ Enter the number of pods followed by the number of peas in a pod: 22 10 22 pods and 10 peas per pod. The total number of peas = 220

ÄÅÅÉÉÃÃÌÌÁÁ Ä Ä ÄÉÉÁÁËËÏÏÃÃÏÏÕÕ Enter the number of pods followed by the number of peas in a pod: 22 10 22 pods and 10 peas per pod. The total number of peas = 220

Ïé áñéèìïß ðïõ åéóÜãïíôáé ðñÝðåé íá äéá÷ùñßæïíôáé áðü ëåõêü äéÜóôçìá.

Ìéá äéáêïðÞ ãñáììÞò èåùñåßôáé åðßóçò ðùò åßíáé ëåõêü äéÜóôçìá êáé ìðïñåß 86 ÊÅÖÁËÁÉÏ 2 Åßóïäïò êáé ¸îïäïò Êïíóüëáò íá ÷ñçóéìïðïéåßôáé ãéá ôï äéá÷ùñéóìü ôùí áñéèìþí ðïõ åéóÜãïíôáé áðü ôï string). Ôï êåíü áëöáñéèìçôéêü ãñÜöåôáé ìå ôç áðüäïóç åíüò æåýãïõò åéóáãùðëçêôñïëüãéï.

ãéêþí ÷ùñßò íá õðÜñ÷åé ôßðïôá áíÜìåóá óôá åéóáãùãéêÜ, ùò åîÞò "". Ôï êåíü áëöáñéèìçôéêü åìöáíßæåôáé ðåñéóóüôåñåò öïñÝò áðü üôé ðéóôåýåôå. ÅÜí ï êþäéêÜò óáò åêôåëåß ôç ìÝèïäï nextLine ãéá ôçí áíÜãíùóç ìéáò ãñáììÞò êåéìÝíïõ, êáé ïé ÷ñÞóôåò äåí ðëçêôñïëïãïýí ôßðïôá óôç ãñáììÞ ðÝñá áðü ôï íá ðéÝæïõí ôï ðëÞêôñï Enter (Return), ôüôå ç ìÝèïäïò nextLine äéáâÜæåé ôï êåíü áëöáñéèìçôéêü.

ÓõìâïõëÝò ÁõôÝò ïé ÷ñÞóéìåò õðïäåßîåéò ðëçñïöïñïýí ôïõò áíáãíþóôåò ãéá ôéò êáëýôåñåò ðñïãñáììáôéóôéêÝò ðñáêôéêÝò. Ï óõããñáöÝáò åîçãåß ôçí ëïãéêÞ ðïõ âñßóêåôáé ðßóù áðü áõôÝò ôéò ðñáêôéêÝò êáé óõìðåñéëáìâÜíåé õðïäåßîåéò ó÷åôéêÜ ìå ôï ðþò ìðïñïýí íá åêôåëåóôïýí áðïôåëåóìáôéêüôåñá.

ÓÕÌÂÏÕËÇ ÐñïôñïðÞ ãéá Åßóïäï ÐÜíôá íá ðñïôñÝðåôå ôïõò ÷ñÞóôåò íá åéóÜãïõí äåäïìÝíá üôáí ôï ðñüãñáììÜ óáò Ý÷åé áíÜãêç ôçí åßóïäï êÜðïéùí äåäïìÝíùí áðü ôïõò ÷ñÞóôåò, üðùò óõìâáßíåé óôï ðáñáêÜôù ðáñÜäåéãìá:

System.out.println(“Enter the number of pods followed by”); System.out.println(“the number of peas in a pod:”);

ÓÕÌÂÏÕËÇ áíôÞ÷çóç

ÁíôÞ÷çóç Åéóüäïõ Èá ðñÝðåé ðÜíôá íá åðáíáëáìâÜíåôå ôçí åßóïäï ðïõ äÝ÷ïíôáé ôá ðñïãñÜììáôÜ óáò óôçí ïèüíç. ÄçëáäÞ, èá ðñÝðåé íá ôõðþíåôå óôçí ïèüíç, óáí áíôÞ÷çóç (echo), üôé åßóïäï ëáìâÜíåé ôï ðñüãñáììÜ óáò áðü ôï ðëçêôñïëüãéï. Ìå ôïí ôñüðï áõôü, ïé ÷ñÞóôåò ìðïñïýí íá åëÝã÷ïõí áí åéóÞ÷èçóáí óùóôÜ üóá ðëçêôñïëüãçóáí. Ãéá ðáñÜäåéãìá, ïé äõï ðáñáêÜôù ðñïôÜóåéò áðü ôï ðñüãñáììá ôïõ Ó÷Þìáôïò 2.9 åðáíáëáìâÜíïõí ôéò ôéìÝò ðïõ äéÜâáóå ôï ðñüãñáììá ãéá ôï ðëÞèïò ôùí êåëõöþí (pods) êáé ôï ðëÞèïò ôùí ìðéæåëéþí (peas) áíÜ êÝëõöïò:

System.out.print(numberOfPods + “ pods and “); System.out.println(peasPerPod + “ peas per pod.”); Ìðïñåß öáéíïìåíéêÜ íá ìçí åßíáé áðáñáßôçôç ç åðáíÜëçøç ôçò åéóüäïõ óôçí ïèüíç, åðåéäÞ ç åßóïäïò áðü ôïõò ÷ñÞóôåò ðáñïõóéÜæåôáé áõôïìÜôùò óôçí ïèüíç êáôÜ ôç äéÜñêåéá ôçò ðëçêôñïëüãçóçò. Ãéáôß íá áó÷ïëçèåßôå ìå ôï ãñÜøéìï ôçò åéóüäïõ ãéá äåýôåñç öïñÜ; Ç åßóïäïò ìðïñåß íá åßíáé ëÜèïò áêüìá êáé áí ìïéÜæåé óùóôÞ. Ãéá ðáñÜäåéãìá, ïé ÷ñÞóôåò ìðïñåß íá ðëçêôñïëïãÞóïõí ìéá ôåëåßá áíôß ôçò õðïäéáóôïëÞò Þ ôï ãñÜììá Ï óôç èÝóç åíüò ìçäåíéêïý. Ç åðáíÜëçøç ôçò åéóüäïõ óôçí ïèüíç ìðïñåß íá áðïêáëýøåé ðáñüìïéá ðñïâëÞìáôá.


112

ÊÅÖÁËÁÉÏ 3

ÑïÞ ÅëÝã÷ïõ

ÐÁÃÉÄÁ ×ñçóéìïðïéþíôáò ôï == ìå ÁëöáñéèìçôéêÜ Ðáñüôé ï ôåëåóôÞò == åëÝã÷åé óùóôÜ áí äõï ôéìÝò ðñùôáñ÷éêïý ôýðïõ, üðùò ãéá ðáñÜäåéãìá äõï áñéèìïß, åßíáé ßóåò, Ý÷åé äéáöïñåôéêü íüçìá üôáí åöáñìüæåôáé óå áíôéêåßìåíá, üðùò ãéá ðáñÜäåéãìá óå áíôéêåßìåíá ôçò êëÜóçò String.2 Èõìçèåßôå ðùò Ýíá áíôéêåßìåíï Ý÷åé ùò ôýðï ìéá êëÜóç, üðùò áêñéâþò óõìâáßíåé êáé ìå Ýíá áëöáñéèìçôéêü. ¼ëá ôá áëöáñéèìçôéêÜ áíÞêïõí óôçí êëÜóç String (áõôü óçìáßíåé üôé åßíáé ôýðïõ String), Ýôóé ôï == ðïõ åöáñìüæåôáé óå äõï áëöáñéèìçôéêÜ äåí åëÝã÷åé áí ôá áëöáñéèìçôéêÜ åßíáé ßóá. Ãéá íá åëÝãîåôå áí äõï áëöáñéèìçôéêÜ (Þ äõï ïðïéáäÞðïôå áíôéêåßìåíá) Ý÷ïõí ßóåò ôéìÝò, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôç ìÝèïäï equals áíôß ôïõ ==. ÕðïèÝóôå, ãéá ðáñÜäåéãìá, ðùò ôï s1 êáé ôï s2 åßíáé ìåôáâëçôÝò String ðïõ ôïõò Ý÷åé äïèåß ôéìÞ, êáé èåùñÞóôå ôçí ðñüôáóç if (s1.equals(s2)) System.out.println(“They are equal strings.”); else System.out.println(“They are not equal strings.”); Óôçí ðåñßðôùóç ðïõ ôá s1 êáé s2 åßíáé ïíüìáôá áëöáñéèìçôéêþí ðïõ ðåñéÝ÷ïõí ôïõò ßäéïõò ÷áñáêôÞñåò ôïðïèåôçìÝíïõò ìå ôçí ßäéá óåéñÜ, ôüôå ç Ýîïäïò èá åßíáé

Ðáãßäåò ÁõôÝò ïé åíüôçôåò ðñïåéäïðïéïýí ãéá ôá ðéï óõíçèéóìÝíá óöÜëìáôá ðïõ ìðïñïýí íá áðïôåëÝóïõí åìðüäéá ãéá ôïõò áñ÷Üñéïõò ðñïãñáììáôéóôÝò êáé äßíïõí óõìâïõëÝò ãéá ôçí áðïöõãÞ ôïõò.

They are equal strings. Ìå ìéá ðñþôç ìáôéÜ ç óçìåéïãñáößá ìðïñåß íá ìïéÜæåé êÜðùò áäÝîéá, êáèþò äåí åßíáé óõììåôñéêÞ ìåôáîý ôùí äõï ìåôáâëçôþí ôùí ïðïßùí åëÝã÷åôáé ç éóüôçôá. Ïé äõï åêöñÜóåéò s1.equals(s2) s2.equals(s1) åßíáé éóïäýíáìåò. Ç ìÝèïäïò equalsIgnoreCase Ý÷åé ðáñüìïéá óõìðåñéöïñÜ ìå ôçí equals, ìå ôç äéáöïñÜ ðùò ìå ôçí equalsIgnoreCase, äå ãßíåôáé äéá÷ùñéóìüò ìåôáîý ðåæþí êáé êåöáëáßùí ãñáììÜôùí. Ãéá ðáñÜäåéãìá, ôï "Hello" êáé ôï "hello", äåí åßíáé ßóá êáèþò ïé ðñþôïé ôïõò ÷áñáêôÞñåò, 'H' êáé 'h', åßíáé äéáöïñåôéêïß. Ùóôüóï, èá èåùñïýíôáí ßóá ìå ôç ìÝèïäï equalsIgnoreCase. Ãéá ðáñÜäåéãìá, ç ðáñáêÜôù ðñüôáóç èá ôõðþóåé óôçí ïèüíç ôç öñÜóç “Equal ignoring case”.: if ("Hello".equalsIgnoreCase("hello")) System.out.println("Equal ignoring case."); ÐáñáôçñÞóôå üôé ç ÷ñÞóç ôïõ áëöáñéèìçôéêïý óå åéóáãùãéêÜ ìå ìéá ìÝèïäï ôçò êëÜóçò String åßíáé áðïëýôùò áðïäåêôÞ, üðùò ÷ñçóéìïðïéåßôáé ðáñáðÜíù ìå ôçí equalsIgnoreCase. ¸íá áëöáñéèìçôéêü óå åéóáãùãéêÜ åßíáé áíôéêåßìåíï ôýðïõ String êáé Ý÷åé üëåò ôéò ìåèüäïõò ðïõ Ý÷åé êáé ïðïéïäÞðïôå Üëëï áíôéêåßìåíï ôýðïõ String. Ãéá ôï åßäïò ôùí åöáñìïãþí ðïõ ìåëåôÜìå óôï êåöÜëáéï áõôü, èá ìðïñïýóáìå íá ÷ñçóéìïðïéïýìå åîßóïõ êáé ôï == ãéá ôïí Ýëåã÷ï ôçò éóüôçôáò ôùí áíôéêåéìÝíùí ôýðïõ String, êáé íá ëáìâÜíïõìå ìéá óùóôÞ áðÜíôçóç. Ùóôüóï, õðÜñ÷ïõí ðåñéðôþóåéò óôéò ïðïßåò ôï == äåí åëÝã÷åé óùóôÜ ôçí éóüôçôá ìåôáîý áëöáñéèìçôéêþí. Ãéá ôï ëüãï áõôü èá ðñÝðåé íá áðïêôÞóåôå ôç óõíÞèåéá íá ÷ñçóéìïðïéåßôå ôç ìÝèïäï equals áíôß ôïõ ôåëåóôÞ == ãéá ôïí Ýëåã÷ï ôçò éóüôçôáò ìåôáîý áëöáñéèìçôéêþí.

2 ¼ôáí åöáñìüæåôáé óå äõï áëöáñéèìçôéêÜ (Þ äõï ïðïéáäÞðïôå áíôéêåßìåíá), ôï == åîåôÜæåé åÜí áðïèçêåýïíôáé óôçí ßäéá èÝóç ìíÞìçò. ¼ìùò äå èá áíáöåñèïýìå óå áõôü 134 ôï üôé ÊÅÖÁËÁÉÏ ìÝ÷ñé ôï ÊåöÜëáéï 4. Ðñïò ôï ðáñüí, åßíáé áðáñáßôçôï íá óçìåéùèåß ìüíï ôï == 3 êÜíåé êÜôé äéáöïñåôéêü áðü ôï íá åëÝã÷åé ôçí éóüôçôá äõï áëöáñéèìçôéêþí.

ÑïÞ ÅëÝã÷ïõ

ÐÁÑÁÄÅÉÃÌÁ

Ðáñáäåßãìáôá ÁõôÝò ïé åíüôçôåò óõíÞèùò ðáñïõóéÜæïõí Ýíá ïëïêëçñùìÝíï ðñüãñáììá ôï ïðïßï åðéëýåé Ýíá óõãêåêñéìÝíï ðñüâëçìá. Ôá ðáñáäåßãìáôá êþäéêá åßíáé ìåãáëýôåñá áðü ôá ôõðéêÜ ó÷Þìáôá êþäéêá êáé åðéóçìáßíïõí ÷ñÞóéìá ÷áñáêôçñéóôéêÜ ôçò Java.

Õðïëïãßæïíôáò ôï ÌÝóï ¼ñï Ìéáò Ëßóôáò Âáèìïëïãéþí Ôï Ó÷Þìá 3.8 ðáñïõóéÜæåé Ýíá ðñüãñáììá ðïõ äéáâÜæåé ìéá ëßóôá âáèìïëïãéþí (scores) êáé õðïëïãßæåé ôï ìÝóï üñï ôïõò. Áðåéêïíßæåé áñêåôÝò ôå÷íéêÝò ðïõ óõ÷íÜ ÷ñçóéìïðïéïýíôáé ìå âñü÷ïõò. Ïé âáèìïëïãßåò åßíáé üëåò ìç áñíçôéêÝò. Áõôü åðéôñÝðåé óôï ðñüãñáììá ôç ÷ñÞóç åíüò áñíçôéêïý áñéèìïý ãéá ôç óÞìáíóç ôïõ ôÝëïõò ôçò ëßóôáò ôùí âáèìïëïãéþí. ÐñÝðåé íá óçìåéùèåß ðùò ï áñíçôéêüò áñéèìüò äåí åßíáé Ýíáò áðü ôïõò áñéèìïýò ðïõ ðåñéëáìâÜíïíôáé óôïí õðïëïãéóìü ôïõ ìÝóïõ üñïõ. Áõôïý ôïõ åßäïõò ï áñéèìüò ðïõ ÷ñçóéìïðïéåßôáé ùò óÞìáíóç ëÞîçò ïíïìÜæåôáé ôéìÞ öñïõñüò (sentinel value). Äåí åßíáé áðáñáßôçôï ìéá ôéìÞ öñïõñüò íá åßíáé Ýíáò áñíçôéêüò áñéèìüò, üìùò ðñÝðåé íá åßíáé êÜðïéá ôéìÞ ðïõ äåí ðñüêåéôáé ðïôÝ íá åìöáíéóôåß ùò "ðñáãìáôéêÞ" ôéìÞ åéóüäïõ. ÅÜí, ãéá ðáñÜäåéãìá, ç ëßóôá åéóüäïõ Þôáí ëßóôá Üñôéùí áêåñáßùí, ôüôå èá ìðïñïýóáôå íá ÷ñçóéìïðïéÞóåôå Ýíáí ðåñéôôü áêÝñáéï ùò ôéìÞ öñïõñü. ÐñïêåéìÝíïõ ï âñü÷ïò íá ôåñìáôéóôåß óùóôÜ, åßíáé áðáñáßôçôï íá åîåôáóôåß ç ëïãéêÞ Ýêöñáóç next >= 0 ðñéí áðü ôçí ðñüóèåóç ôïõ áñéèìïý ðïõ äéáâÜæåôáé. Ìå ôïí ôñüðï áõôü áðïöåýãïõìå ôçí ðñüóèåóç ôçò ôéìÞò öñïõñïý. ¸ôóé åðéèõìïýìå ôï óþìá ôïõ âñü÷ïõ íá êáôáëÞãåé ìå next = keyboard.nextDouble(); Ãéá íá îåêéíÞóåé íá ëåéôïõñãåß ç äéáäéêáóßá åéóáãùãÞò âáèìïëïãéþí, áðáéôåßôáé ç ôïðïèÝôçóç ôùí äõï ðáñáðÜíù ãñáììþí áêñéâþò ðñéí áðü ôï âñü÷ï. Ðñéí áðü Ýíá âñü÷ï óõ÷íÜ óõìâáßíåé íá ÷ñåéÜæåôáé ç åéóáãùãÞ åíüò ðëÞèïõò ðñïêáôáñêôéêþí ðñïôÜóåùí ðïõ íá ðñïåôïéìÜæïõí êáôÜëëçëá ôï Ýäáöïò ðñéí ôçí åêôÝëåóç ôïõ. Äþóå ïäçãßåò óôïõò ÷ñÞóôåò count = 0; sum = 0; ÄéÜâáóå Ýíáí áñéèìü êáé áðïèÞêåõóÝ ôïí óå ìéá ìåôáâëçôÞ ìå ôï üíïìá next while(next >= 0) { sum = sum + next;


ÁðáíôÞóåéò óôéò ÁóêÞóåéò Áõôïáîéïëüãçóçò

ÐÅÅÑÑÉÉË Ð ËÇ ÇØ ØÇ Ç ÊÊÅÅÖ ÖÁ ÁË ËÁ ÁÉÉÏ ÏÕ Õ n ÐñïôÜóåéò äéáêëÜäùóçò óôç Java åßíáé ïé ðñïôÜóåéò êáé switch. 158 if-elseÊÅÖÁËÁÉÏ 3

153

ÐåñéëÞøåéò Êåöáëáßùí ÑïÞ ÅëÝã÷ïõ

n H ðñüôáóç switch åßíáé ðñüôáóç äéáêëÜäùóçò ðïëëáðëþí äñüìùí. ÌðïÁõôü ôï åñãáëåßï ðïõ âñßóêåôáé óôï ñåßôå åðßóçò íá ó÷çìáôßæåôå ðñïôÜóåéò äéáêëÜäùóçò ðïëëáðëþí äñüìùí ôÝëïò êÜèå nêåöáëáßïõ äßíåé óáò ïäçãÞóåé óôç óêÝøç ðùò ç ìåôáâëçôÞ äåí ìåéþíåôáé óôï óùóôüìéá ÷ñüíï. åìöùëéÜæïíôáò ðñïôÜóåéò if-else ìÝóá óå Üëëåò ðñïôÜóåéò if-else. ¸ôóé, Óôçí ðñáãìáôéêüôçôá, ôï óöÜëìá üôé ïé äõï ðñïôÜóåéò ðëÞñçåßíáé ðåñßëçøç ôùí âáóéêþí ó÷çìáôßæïíôáé ðñïôÜóåéò if-else ðïëëáðëþí äñüìùí. n Ïé ëïãéêÝò åêöñÜóåéò áðïôéìþíôáé ìå ôñüðï ðáñüìïéï ìå åêåßíï ðïõ áðïåííïéþí ðïõ ðáñïõóéÜæïíôáé óôï sum = sum + n; ôéìþíôáé êáé ïé áñéèìçôéêÝò åêöñÜóåéò. Ç ôéìÞ ìéáò ëïãéêÞò Ýêöñáóçò n--; åêÜóôïôå êåöÜëáéï. ìðïñåß íá áðïèçêåõôåß óå ìéá ìåôáâëçôÞ ôýðïõ boolean. èá ðñÝðåé íá áíôéóôñáöïýí ùò åîÞò n Ïé ðñïôÜóåéò âñü÷ùí óôç Java åßíáé ïé ðñïôÜóåéò while, do-while, êáé for. n--; n Ìéá ðñüôáóç do-while ðÜíôá åðáíáëáìâÜíåé ôï óþìá ôïõ âñü÷ïõ ôçò ôïõsum = sum + n; ëÜ÷éóôïí ìéá öïñÜ. Ôüóï ç ðñüôáóç while üóï êáé ç ðñüôáóç for ìðïñåß íá 41. int n, sum = 0; åðáíáëÜâåé ôï óþìá ôïõ âñü÷ïõ ôçò ìçäÝí öïñÝò. for (n n Ï âñü÷ïò for ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá ëÜâïõìå ôï éóïäýíáìï ôçò= 1; n < 10; n++) { åíôïëÞò "åðáíÝëáâå ôï óþìá ôïõ âñü÷ïõ n öïñÝò". System.out.println(“n == “ + n + “ sum == “ + sum); n Ç ðáñáêïëïýèçóç ìåôáâëçôþí åßíáé ìéá êáëÞ ìÝèïäïò åêóöáëìÜôùóçò ôùí //Ç ðáñáðÜíù ãñáììÞ åßíáé Ýíáò Ýëåã÷ïò ãéá ðáñáêïëïýèçóç âñü÷ùí. sum = sum + n; n ¸íáò Ýëåã÷ïò éó÷õñéóìïý ìðïñåß íá ðñïóôåèåß óôïí êþäéêÜ óáò Ýôóé } þóôå áí ï éó÷õñéóìüò åßíáé øåõäÞò, ôï ðñüãñáììÜ óáò íá óôáìáôÞóåé ðñïóùñéíÜ System.out.println(“After loop”);//Ýëåã÷ïò ãéá ðáñáêïëïýèçóç ìå Ýíá ìÞíõìá óöÜëìáôïò. System.out.println(“n == “ + n + “ sum == “ + sum);//Ýëåã÷ïò ãéá ðáñáêïëïýèçóç System.out.println(“1 + 2 + ...+9 + 10 == “ + sum); ÁÐ Á ÐÁ ÁÍ ÍÔ ÔÇ ÇÓ ÓÅÅÉÉÓ ÓÓ ÓÔ ÔÉÉÓ ÓÁ ÁÓ ÓÊ ÊÇ ÇÓ ÓÅÅÉÉÓ ÓÁ ÁÕ ÕÔ ÔÏ ÏÁ ÁÎ ÎÉÉÏ ÏË ËÏ ÏÃÃÇ ÇÓ ÓÇ ÇÓ Ó ÅÜí ìåëåôÞóåôå ôçí Ýîïäï áõôÞò ôçò ðáñáêïëïýèçóçò, èá äåßôå ðùò ðïôÝ äåí 1. if (score > 100) Ýãéíå ðñüóèåóç ôïõ 10. Åäþ ðñüêåéôáé ãéá óöÜëìá åêôüò-êáôÜ-Ýíá. System.out.println(“High”); 42. Áõôüò åßíáé ï êþäéêáò ôïõ ïðïßïõ ôéò ìåôáâëçôÝò ðáñáêïëïõèÞóáôå óôçí else ðñïçãïýìåíç Üóêçóç. ÅÜí ìåëåôÞóåôå ôçí Ýîïäï áðü áõôÞ ôçí ðáñáêïëïýSystem.out.println(“Low”); èçóç, èá äåßôå ðùò ðïôÝ äåí Ýãéíå ðñüóèåóç ôïõ 10. Åäþ ðñüêåéôáé ãéá óöÜëìá 2 if (savings > expenses) óôï âñü÷ï. { 43. assert (time <= limit); System.out.println(“Solvent”); savings = savings - expenses; Åñãáóßåò Ðñïãñáììáôéóìïý ÅÅÑÑÃÃÁÁÓÓÉÉÅÅÓÓ Ð ÐÑ ÑÏ ÏÃÃÑ ÑÁ ÁÌ ÌÌ ÌÁ ÁÔ ÔÉÉÓ ÓÌ ÌÏ ÏÕ Õ expenses = 0; } 1. (ÁõôÞ åßíáé ìéá äéáöïñåôéêÞ åêäï÷Þ ìéáò Üóêçóçò ôïõ Êåöáëáßïõ 2). Ï Ïé Åñãáóßåò Ðñïãñáììáôéóìïý ðïõ else Âáâõëùíéáêüò áëãüñéèìïò ãéá ôïí õðïëïãéóìü ôçò ôåôñáãùíéêÞò ñßæáò åíüò { áñéèìïý n åßíáé ï åîÞò: âñßóêïíôáé óôï ôÝëïò êÜèå êåöáëáßïõ System.out.println(“Bankrupt”); 1. ÌáíôÝøôå (guess) Ýíáí áñéèìü ùò áðÜíôçóç (ìðïñåßôå íá åðéëÝîåôå ôï n/2 ðñïêáëïýí ôïõò áíáãíþóôåò íá } ùò áñ÷éêÞ áðÜíôçóç). ó÷åäéÜóïõí êáé 2. Õðïëïãßóôå r = n / guess 3. if (number > 0) íá õëïðïéÞóïõí 3. ÈÝóôå ôç guess = (guess + r) / 2 System.out.println(“Positive”); ðñïãñÜììáôá Java ãéá ôçí åðßëõóç 4. ÅðéóôñÝøôå óôï äåýôåñï âÞìá êáé åðáíáëÜâåôå ôá âÞìáôá ìÝ÷ñé íá ãßíïõí else ðñïâëçìÜ ôùí. Ðáñáäåßãìáôá System.out.println(“Not positive”); ôùí ëýóåùí ßäéåò ïé äýï ôåëåõôáßåò ôéìÝò ôçò guess. Íá ãñÜøåôå Ýíá ðñüãñáììá ðïõ íá äÝ÷åôáé ùò åßóïäï Ýíáí áêÝñáéï áñéèìü n, ãéá üëåò ôéò åñãáóßåò ðñïãñáììáôéóìïý íá åðáíáëáìâÜíåé ïëüêëçñï ôï Âáâõëùíéáêü áëãüñéèìï ìÝ÷ñé ç ôéìÞ ôçò ìåôáåßíáé äéáèÝóéìá óå üëïõò ôïõò âëçôÞò guess íá âñßóêåôáé óôï 1% ôçò ôéìÞò ôçò, êáé íá ôõðþíåé óôçí ïèüíç ôçí áðÜíôçóç ùò áñéèìü ôýðïõ double ìå äõï äåêáäéêÜ øçößá. Ç áðÜíôçóÞ óáò èá äéäÜóêïíôåò. åßíáé ðéï óùóôÞ ãéá ìåãÜëåò ôéìÝò ôïõ n. 2. Óå Ýíá ðáé÷íßäé ìå æÜñéá, ç äéáäéêáóßá ôïõ óôïé÷Þìáôïò åîåëßóóåôáé ùò åîÞò. Ñß÷íïíôáé äõï åîÜðëåõñá æÜñéá. Ç ðñþôç æáñéÜ óå Ýíá ãýñï ôïõ ðáé÷íéäéïý ïíïìÜæåôáé "ðñþôç æáñéÜ". Ìéá ðñþôç æáñéÜ ðïõ öÝñíåé 7 Þ 11 êåñäßæåé áõôïìÜôùò, êáé ìéá æáñéÜ ðïõ öÝñíåé 2, 3, Þ 12 ÷Üíåé áõôïìÜôùò. ÅÜí ç ðñþôç æáñéÜ öÝñåé 4, 5, 6, 8, 9, Þ 10 ôüôå áõôüò ï áñéèìüò ãßíåôáé ï áñéèìüò ðïõ êåñäßæåé. Ïé ðáß÷ôåò


ÓõíïðôéêÜ Ðåñéå÷üìåíá ÊÅÖÁËÁÉÏ 1

ÎÅÊÉÍÙÍÔÁÓ

ÊÅÖÁËÁÉÏ 2

ÅÉÓÏÄÏÓ ÊÁÉ ÅÎÏÄÏÓ ÊÏÍÓÏËÁÓ

ÊÅÖÁËÁÉÏ 3

ÑÏÇ ÅËÅÃ×ÏÕ

ÊÅÖÁËÁÉÏ 4

ÏÑÉÆÏÍÔÁÓ ÊËÁÓÅÉÓ É

ÊÅÖÁËÁÉÏ 5

ÏÑÉÆÏÍÔÁÓ ÊËÁÓÅÉÓ ÉÉ

ÊÅÖÁËÁÉÏ 6

ÐÉÍÁÊÅÓ

ÊÅÖÁËÁÉÏ 7

ÊËÇÑÏÍÏÌÉÊÏÔÇÔÁ

ÊÅÖÁËÁÉÏ 8

ÐÏËÕÌÏÑÖÉÓÌÏÓ ÊÁÉ ÁÖÇÑÇÌÅÍÅÓ ÊËÁÓÅÉÓ

ÊÅÖÁËÁÉÏ 9

×ÅÉÑÉÓÌÏÓ ÅÎÁÉÑÅÓÅÙÍ

ÊÅÖÁËÁÉÏ 10

ÅÉÓÏÄÏÓ/ÅÎÏÄÏÓ ÁÑ×ÅÉÙÍ

ÊÅÖÁËÁÉÏ 11

ÁÍÁÄÑÏÌÇ

ÊÅÖÁËÁÉÏ 12

UML ÊÁÉ ÐÑÏÔÕÐÁ

ÊÅÖÁËÁÉÏ 13

ÄÉÅÐÁÖÅÓ ÊÁÉ ÅÓÙÔÅÑÉÊÅÓ ÊËÁÓÅÉÓ

ÊÅÖÁËÁÉÏ 14

ÃÅÍÉÊÅÕÌÅÍÅÓ ÊËÁÓÅÉÓ ÊÁÉ ÌÅÈÏÄÏÉ, ÊÁÉ Ç ÊËÁÓÇ ArrayList

ÊÅÖÁËÁÉÏ 15

ÓÕÍÄÅÄÅÌÅÍÅÓ ÄÏÌÅÓ ÄÅÄÏÌÅÍÙÍ 603

ÊÅÖÁËÁÉÏ 16

ÓÕËËÏÃÅÓ ÊÁÉ ÅÐÁÍÁËÇÐÔÅÓ

ÊÅÖÁËÁÉÏ 17

SWING I

ÊÅÖÁËÁÉÏ 18

ÌÉÊÑÏÅÖÁÑÌÏÃÅÓ

ÊÅÖÁËÁÉÏ 19

SWING II

ÊÅÖÁËÁÉÏ 20

Ç JAVA ÄÅÍ Å×ÅÉ ÔÅËÏÓ

ÐáñÜñôçìá 1

ËÝîåéò ÊëåéäéÜ

ÐáñÜñôçìá 2

Êáíüíåò ðñïôåñáéüôçôáò êáé ðñïóåôáéñéóôéêüôçôáò

ÐáñÜñôçìá 3

Óýíïëï ÷áñáêôÞñùí Unicode

ÐáñÜñôçìá 4

Ïäçãßåò ìïñöïðïßçóçò ãéá ôçí printf

ÐáñÜñôçìá 5

Ðåñßëçøç ôùí êëÜóåùí êáé ôùí äéåðáöþí

ÐáñÜñôçìá 6

Áããëïåëëçíéêü ãëùóóÜñéï

883

Åëëçíïáããëéêü ãëùóóÜñéï

887

1 39

67 113 223

283 339 377

405 445

495 521 537

651

681 741

763 809

827 831 833 835

829

571


Ðåñéå÷üìåíá ÊÅÖÁËÁÉÏ 1 1.1

1.2

1.3

1.4

ÊÅÖÁËÁÉÏ 2 2.1

ÎÅÊÉÍÙÍÔÁÓ 1 ÅÉÓÁÃÙÃÇ ÓÔÇ AVA 2 Ç ðñïÝëåõóç ôçò ãëþóóáò Java I 2 Áíôéêåßìåíá êáé ÌÝèïäïé 3 ÌéêñïåöáñìïãÝò I 3 ¸íá ðáñÜäåéãìá åöáñìïãÞò óå Java 4 Ï êþäéêáò-byte êáé ç åéêïíéêÞ ìç÷áíÞ ôçò Java 6 ÖïñôùôÞò êëÜóçò I 7 Ìåôáãëùôôßæïíôáò Ýíá ðñüãñáììá Þ ìéá êëÜóç Java 7 Åêôåëþíôáò Ýíá ðñüãñáììá Java 8 ÅÊÖÑÁÓÅÉÓ ÊÁÉ ÐÑÏÔÁÓÅÉÓ ÁÍÁÈÅÓÇÓ 9 ÐñïóäéïñéóôÝò 9 ÌåôáâëçôÝò 10 ÐñïôÜóåéò áíÜèåóçò 11 Ðåñéóóüôåñåò ðñïôÜóåéò áíÜèåóçò I 12 Óõìâáôüôçôá áíáèÝóåùí 13 ÓôáèåñÝò 14 Áñéèìçôéêïß ôåëåóôÝò êáé åêöñÜóåéò 15 ÐáñåíèÝóåéò êáé êáíüíåò ðñïôåñáéüôçôáò I 16 Äéáßñåóç áêÝñáéùí áñéèìþí êáé áñéèìþí êéíçôÞò õðïäéáóôïëÞò ÌåôáôñïðÞ ôýðùí 19 ÔåëåóôÝò áýîçóçò êáé ìåßùóçò 20 Ç ÊËÁÓÇ STRING 22 ÁëöáñéèìçôéêÝò óôáèåñÝò êáé ìåôáâëçôÝò 22 ÓõíÝíùóç Áëöáñéèìçôéêþí 22 ÊëÜóåéò 23 ÌÝèïäïé ôçò êëÜóçò String 24 Áêïëïõèßåò äéáöõãÞò 28 Åðåîåñãáóßá áëöáñéèìçôéêþí 29 Ôï óýíïëï ÷áñáêôÞñùí Unicode I 30 ÕÖÏÓ ÐÑÏÃÑÁÌÌÁÔÉÓÌÏÕ 30 ÏíïìÜæïíôáò ôéò óôáèåñÝò 31 ÓõìâÜóåéò ïñèïãñáößáò óôç Java 32 Ó÷üëéá 33 ÅéóáãùãÞ åóï÷þí 34 Ðåñßëçøç Êåöáëáßïõ 34 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 34 Åñãáóßåò ðñïãñáììáôéóìïý 36

17

ÅÉÓÏÄÏÓ ÊÁÉ ÅÎÏÄÏÓ ÊÏÍÓÏËÁÓ 39 ÅÎÏÄÏÓ ÓÔÇÍ ÏÈÏÍÇ 40 System.out.ptintln 40 ÓõìâïõëÞ: ÄéáöïñåôéêÝò ðñïóåããßóåéò áíáöïñéêÜ ìå ôç ìïñöïðïßçóç ôçò åîüäïõ 42 Ìïñöïðïéþíôáò ôçí Ýîïäï ìå ôçí ìÝèïäï printf 42 ÓõìâïõëÞ: Ìïñöïðïéþíôáò ÷ñçìáôéêÜ ðïóÜ ìå ôç ìÝèïäï printf 45 ÓõìâïõëÞ: ÊëçñïäïôçìÝíïò êþäéêáò 46 Ìïñöïðïßçóç ÷ñçìáôéêþí ðïóþí ìå ôç ÷ñÞóç ôçò êëÜóçò NumberFormat I 47 ÅéóÜãïíôáò ðáêÝôá êáé êëÜóåéò 49 Ç êëÜóç DecimalFormat I 50


xvi

Ðåñéå÷üìåíá

2.2

ÅÉÓÏÄÏÓ ÊÏÍÓÏËÁÓ ÌÅ ÔÇ ×ÑÇÓÇ ÔÇÓ ÊËÁÓÇÓ Scanner Ç êëÜóç Scanner 53 Ðáãßäá: ×ñçóéìïðïéþíôáò ôïí ôåñìáôéóôÞ ãñáììÞò, ‘/n’ 58 Ôï êåíü áëöáñéèìçôéêü 58 ÓõìâïõëÞ: Προτροπή για είσοδο 58 ÐáñÜäåéãìá: Óýóôçìá áõôüìáôùí óõíáëëáãþí 60 ¢ëëïé äéá÷ùñéóôÝò åéóüäïõ 60 Ðåñßëçøç êåöáëáßïõ 63 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 63 Åñãáóßåò ðñïãñáììáôéóìïý 65

53

ÊÅÖÁËÁÉÏ 3 ÑÏÇ ÅËÅÃ×ÏÕ 3.1

3.2

3.3

67 ÌÇ×ÁÍÉÓÌÏÓ ÄÉÁÊËÁÄÙÓÇÓ 68 ÐñïôÜóåéò if-else 68 Ðáñáëåßðïíôáò ôï else 69 Óýíèåôåò ðñïôÜóåéò 69 ÓõìâïõëÞ: ÔïðïèÝôçóç ôùí áãêõëþí 70 ÅìöùëéáóìÝíåò ðñïôÜóåéò 70 Ðñüôáóç if-else ðïëëáðëþí äñüìùí 71 ÐáñÜäåéãìá: Êñáôéêüò Öüñïò ÅéóïäÞìáôïò 72 Ç ðñüôáóç switch 73 Ðáãßäá: Îå÷íþíôáò Ýíá break óå ìéá ðñüôáóç switch 76 ÔåëåóôÞò óõíèÞêçò I 77 ËÏÃÉÊÅÓ ÅÊÖÑÁÓÅÉÓ 77 ÁðëÝò ëïãéêÝò åêöñÜóåéò 77 Ðáãßäá: ×ñçóéìïðïéþíôáò ôï = áíôß ôïõ == 77 Ðáãßäá: ×ñçóéìïðïéþíôáò ôï == ìå áëöáñéèìçôéêÜ 78 ËåîéêïãñáöéêÞ êáé áëöáâçôéêÞ äéÜôáîç 79 Äïìþíôáò ëïãéêÝò åêöñÜóåéò 81 Ðáãßäá: Áëëçëïõ÷ßåò áíéóïôÞôùí 82 Áðïôéìþíôáò ëïãéêÝò åêöñÜóåéò 82 ÓõìâïõëÞ: ÏíïìÜæïíôáò ìåôáâëçôÝò ôýðïõ boolean 84 ÌåñéêÞ êáé ðëÞñçò áðïôßìçóç 84 Êáíüíåò ðñïôåñáéüôçôáò êáé ðñïóåôáéñéóôéêüôçôáò 85 ÂÑÏ×ÏÉ 90 Ç ðñüôáóç while êáé ç Ðñüôáóç do-while 90 Áëãüñéèìïò êáé øåõäïêþäéêáò 92 ÐáñÜäåéãìá: Õðïëïãßæïíôáò ôï ìÝóï üñï ìéáò ëßóôáò âáèìïëïãéþí Ç ðñüôáóç for 95 Ôï êüììá óôéò ðñïôÜóåéò for 97 ÓõìâïõëÞ: Âñü÷ïé ðïõ åðáíáëáìâÜíïíôáé Í öïñÝò 98 Ðáãßäá: ÅðéðëÝïí Åëëçíéêü åñùôçìáôéêü óå ìéá ðñüôáóç for 98 Ðáãßäá: ÁôÝñìïíïé âñü÷ïé 99 ÅìöùëéáóìÝíïé âñü÷ïé 99 Ïé ðñïôÜóåéò break êáé continue I 101 Ç ðñüôáóç exit 102 ÓöÜëìáôá âñü÷ùí 102 Ðáñáêïëïõèþíôáò ìåôáâëçôÝò 103 ¸ëåã÷ïé éó÷õñéóìþí I 103 Ðåñßëçøç êåöáëáßïõ 105 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 106 Åñãáóßåò ðñïãñáììáôéóìïý 109

ÊÅÖÁËÁÉÏ 4 ÏÑÉæÏÍÔÁÓ ÊËÁÓÅÉÓ É 4.1

93

113 ÏÑÉÓÌÏÉ ÊËÁÓÇÓ 114 ÌåôáâëçôÝò êáé ìÝèïäïé óôéãìéüôõðïõ 116 Ðåñéóóüôåñá ó÷åôéêÜ ìå ôéò ìåèüäïõò 118 ÓõìâïõëÞ: ÊÜèå ìÝèïäïò ìðïñåß íá ÷ñçóéìïðïéçèåß ùò ìÝèïäïò void 120 ÔïðéêÝò ìåôáâëçôÝò 123 Ìðëïê 123 ÓõìâïõëÞ: Äçëþíïíôáò ìåôáâëçôÝò ìÝóá óå ìéá ðñüôáóç for 124 ÐáñÜìåôñïé ðñùôáñ÷éêïý ôýðïõ 124 Ðáãßäá: Ç ÷ñÞóç ôùí üñùí “ÐáñÜìåôñïò” êáé “¼ñéóìá” 129 ÁðëÝò ðåñéðôþóåéò ìå ðáñáìÝôñïõò ôýðïõ êëÜóçò 130 Ç ðáñÜìåôñïò this 130 ÌÝèïäïé ðïõ åðéóôñÝöïõí ìéá ëïãéêÞ ôéìÞ 132


xvii

Ðåñéå÷üìåíá

4.2

4.3

4.4

ÊÅÖÁËÁÉÏ 5 5.1

5.2

5.3

5.4

Ïé ìÝèïäïé equals êáé toString 134 ÁíáäñïìéêÝò ìÝèïäïé 136 ÓõìâïõëÞ: ÄïêéìÜæïíôáò ôéò ìåèüäïõò 136 ÁÐÏÊÑÕØÇ ÊÁÉ ÅÍÈÕËÁÊÙÓÇ ÐËÇÑÏÖÏÑÉÙÍ 137 ÔñïðïðïéçôÝò public êáé private 138 ÐáñÜäåéãìá: Áêüìá ìéá êëÜóç ðïõ áíáðáñéóôÜ ìéá çìåñïìçíßá 139 ÌÝèïäïé ðñïóðÝëáóçò êáé ìåôáëëáãÞò 140 ÓõìâïõëÞ: Ìéá êëÜóç Ý÷åé ðñïóðÝëáóç óôá éäéùôéêÜ ìÝëç üëùí ôùí áíôéêåéìÝíùí ôçò êëÜóçò ÓõìâïõëÞ: Ïé ìÝèïäïé ìåôáëëáãÞò ìðïñïýí íá åðéóôñÝöïõí ìéá ôéìÞ ôýðïõ boolean I 144 ÓõíèÞêåò ðñéí êáé ìåôÜ ôçí êëÞóç 144 ÕÐÅÑÖÏÑÔÙÓÇ 145 Êáíüíåò õðåñöüñôùóçò 145 Ðáãßäá: Õðåñöüñôùóç êáé áõôüìáôç ìåôáôñïðÞ ôýðïõ 148 Ðáãßäá: Äå ìðïñåßôå íá êÜíåôå õðåñöüñôùóç âáóéóìÝíïé óôïí åðéóôñåöüìåíï ôýðï 150 ÄÇÌÉÏÕÑÃÏÉ 151 Ïñéóìïß ôùí äçìéïõñãþí 151 ÓõìâïõëÞ: Ìðïñåßôå íá êáëÝóåôå ìéá Üëëç ìÝèïäï ìÝóá áðü Ýíá äçìéïõñãü 157 ÓõìâïõëÞ: ¸íáò äçìéïõñãüò Ý÷åé ìéá ðáñÜìåôñï this 157 ÓõìâïõëÞ: ÓõìðåñéëÜâåôå Ýíá äçìéïõñãü Üíåõ ïñéóìÜôùí 157 ÐáñÜäåéãìá: Ç ôåëéêÞ åêäï÷Þ ôçò êëÜóçò ðïõ áíáðáñéóôÜ ìéá çìåñïìçíßá 158 ÐñïåðéëåãìÝíåò áñ÷éêïðïéÞóåéò ìåôáâëçôþí 159 ¸íáò åíáëëáêôéêüò ôñüðïò áñ÷éêïðïßçóçò ôùí ìåôáâëçôþí óôéãìéüôõðïõ 159 ÐáñÜäåéãìá: Ìéá êëÜóç ãéá åããñáöÝò áñ÷åßïõ êáôïéêßäéùí æþùí 159 Ç êëÜóç StringTokenizer I 162 Ðåñßëçøç Êåöáëáßïõ 165 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 166 Åñãáóßåò ðñïãñáììáôéóìïý 169

ÏÑÉæÏÍÔÁÓ ÊËÁÓÅÉÓ ÉÉ 173 ÓÔÁÔÉÊÅÓ ÌÅÈÏÄÏÉ ÊÁÉ ÌÅÔÁÂËÇÔÅÓ 174 ÓôáôéêÝò ìÝèïäïé 174 Ðáãßäá: Êáëþíôáò ìéá ìç óôáôéêÞ ìÝèïäï ìÝóá áðü ìéá óôáôéêÞ ìÝèïäï 176 ÓõìâïõëÞ: Óå êÜèå êëÜóç ìðïñåßôå íá ðñïóèÝóåôå ìéá main 177 ÓôáôéêÝò ìåôáâëçôÝò 179 Ç êëÜóç Math 183 ÐåñéâÜëëïõóåò êëÜóåéò 186 Áõôüìáôç óõóêåõáóßá êáé áðïóõóêåõáóßá 186 ÓôáôéêÝò ìÝèïäïé óå ðåñéâÜëëïóåò êëÜóåéò 188 Ðáãßäá: Ìéá ðåñéâÜëëïõóá êëÜóç äå äéáèÝôåé äçìéïõñãü Üíåõ ïñéóìÜôùí 190 ÁÍÁÖÏÑÅÓ ÊÁÉ ÐÁÑÁÌÅÔÑÏÉ ÊËÁÓÇÓ 191 ÌåôáâëçôÝò êáé ìíÞìç 191 ÁíáöïñÝò 192 ÐáñÜìåôñïé ôýðïõ êëÜóçò 196 Ðáãßäá: Ç ÷ñÞóç ôïõ = êáé ôïõ == ìå ìåôáâëçôÝò ôýðïõ êëÜóçò 199 Ç óôáèåñÜ null 200 Ðáãßäá: Åîáßñåóç ìçäåíéêïý äåßêôç 200 Ï ôåëåóôÞò new êáé ôá áíþíõìá áíôéêåßìåíá 201 ÐáñÜäåéãìá: Ìéá Üëëç ðñïóÝããéóç ãéá åßóïäï áðü ôï ðëçêôñïëüãéï I 202 ÓõìâïõëÞ: Íá ÷ñçóéìïðïéåßôå óôáôéêÝò åéóáãùãÝò I 203 ÓÙÓÔÇ ÊÁÉ ËÁÈÏÓ ×ÑÇÓÇ ÔÙÍ ÁÍÁÖÏÑÙÍ 204 ÐáñÜäåéãìá: Ìéá êëÜóç Üôïìï 205 Ðáãßäá: Ç null ìðïñåß íá åßíáé üñéóìá ìéáò ìåèüäïõ 209 Äçìéïõñãïß áíôéãñÜöùí 212 Ðáãßäá: ÄéáññïÝò óôçí éäéùôéêüôçôá ìéáò êëÜóçò 213 ÌåôáëëÜîéìåò êáé ìç ìåôáëëÜîéìåò êëÜóåéò 216 ÓõìâïõëÞ: Âáèý áíôßãñáöï åíáíôßïí ñç÷ïý áíôßãñáöïõ 217 ÓõìâïõëÞ: ÕðïèÝóôå üôé ïé óõíÜäåëöïé óáò åßíáé êáêïðñïáßñåôïé 314 ÐÁÊÅÔÁ ÊÁÉ javadoc 218 ÐáêÝôá êáé ðñïôÜóåéò import 218 Ôï ðáêÝôï java.lang 219 Ïíüìáôá ðáêÝôùí êáé öÜêåëïé 219 Ðáãßäá: Ïé õðïöÜêåëïé äåí åéóÜãïíôáé áõôïìÜôùò 221 Ôï ðñïåðéëåãìÝíï ðáêÝôï 221 Ðáãßäá: Ôé èá óõìâåß áí äå óõìðåñéëÜâåôå ôïí ôñÝ÷ïíôá öÜêåëï óôç ìåôáâëçôÞ Classpath Ðñïóäéïñßæïíôáò äéáäñïìÝò öáêÝëùí ìå êëÜóåéò ãéá ôç ìåôáãëþôôéóç I 222 ÄéÝíåîç ïíïìÜôùí I 222

222

143


xviii

Ðåñéå÷üìåíá

ÅéóáãùãÞ óôï javadoc I 223 Ó÷ïëéÜæïíôáò ôéò êëÜóåéò ãéá ôï javadoc I Åêôåëþíôáò ôï javadoc I 224 Ðåñßëçøç Êåöáëáßïõ 225 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò Åñãáóßåò ðñïãñáììáôéóìïý 229

ÊÅÖÁËÁÉÏ 6 6.1

6.2

6.3

6.4

ÊÅÖÁËÁÉÏ 7 7.1

7.2

7.3

223 226

ÐÉÍÁÊÅÓ 233 ÅÉÓÁÃÙÃÇ ÓÔÏÕÓ ÐÉÍÁÊÅÓ 234 Äçìéïõñãßá êáé åðåîåñãáóßá ôùí ðéíÜêùí 234 Ç ìåôáâëçôÞ óôéãìéüôõðïõ length 237 ÓõìâïõëÞ: ×ñÞóç âñü÷ùí for ìå ðßíáêåò 238 Ðáãßäá: Ïé äåßêôåò ôùí ðéíÜêùí ðÜíôá îåêéíïýí áðü ôï ìçäÝí 238 Ðáãßäá: Äåßêôçò ðßíáêá åêôüò ïñßùí 238 Áñ÷éêïðïéþíôáò ðßíáêåò 239 Ðáãßäá: ¸íáò ðßíáêáò ÷áñáêôÞñùí äåí åßíáé áëöáñéèìçôéêü 240 ÐÉÍÁÊÅÓ ÊÁÉ ÁÍÁÖÏÑÅÓ 241 Ïé ðßíáêåò åßíáé áíôéêåßìåíá 241 Ðáãßäá: Ðßíáêåò ìå âáóéêü ôýðï êëÜóçò 242 ÐáñÜìåôñïé ôýðïõ ðßíáêá 242 Ðáãßäá: Ç ÷ñÞóç ôïõ = êáé ôïõ == ìå ðßíáêåò 244 Ôá ïñßóìáôá ôçò ìåèüäïõ main I 247 ÌÝèïäïé ðïõ åðéóôñÝöïõí Ýíáí ðßíáêá 248 ÐÑÏÃÑÁÌÌÁÔÉæÏÍÔÁÓ ÌÅ ÐÉÍÁÊÅÓ 249 Ìåñéêþò óõìðëçñùìÝíïé ðßíáêåò 249 ÐáñÜäåéãìá: Ìéá êëÜóç ãéá ìåñéêþò óõìðëçñùìÝíïõò ðßíáêåò 252 ÓõìâïõëÞ: Ïé ìÝèïäïé ðñïóðÝëáóçò äå ÷ñåéÜæåôáé íá åðéóôñÝöïõí áðëÜ ìåôáâëçôÝò óôéãìéüôõðïõ Ï âñü÷ïò “FOR-EACH” I 257 ÌÝèïäïé ìå ìåôáâëçôü ðëÞèïò ðáñáìÝôñùí I 258 ÄéáññïÝò óôçí éäéùôéêüôçôá ìéáò êëÜóçò ìå ìåôáâëçôÝò óôéãìéüôõðïõ ôýðïõ ðßíáêá 260 ÐáñÜäåéãìá: ¸íá ðáñÜäåéãìá åðåîåñãáóßáò áëöáñéèìçôéêþí I 260 ÐáñÜäåéãìá: Ôáîéíïìþíôáò Ýíáí ðßíáêá 263 Ôýðïé áðáñßèìçóçò I 266 ÓõìâïõëÞ: Ôýðïé áðáñßèìçóçò óå ðñïôÜóåéò Switch I 270 ÐÏËÕÄÉÁÓÔÁÔÏÉ ÐÉÍÁÊÅÓ 271 ÂáóéêÜ óôïé÷åßá ôùí ðïëõäéÜóôáôùí ðéíÜêùí 271 ×ñçóéìïðïéþíôáò ôç ìåôáâëçôÞ óôéãìéüôõðïõ length 273 Áêáíüíéóôïé ðßíáêåò I 274 ÐáñÜìåôñïé ôýðïõ ðïëõäéÜóôáôïõ ðßíáêá êáé åðéóôñåöüìåíåò ôéìÝò 275 ÐáñÜäåéãìá: Ìéá êëÜóç âáèìïëïãßïõ 275 Ðåñßëçøç Êåöáëáßïõ 280 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 280 Åñãáóßåò ðñïãñáììáôéóìïý 286 ÊËÇÑÏÍÏÌÉÊÏÔÇÔÁ 289 ÔÁ ÂÁÓÉÊÁ Ó×ÅÔÉÊÁ ÌÅ ÔÇÍ ÊËÇÑÏÍÏÌÉÊÏÔÇÔÁ 290 ÐáñÜãùãåò êëÜóåéò 290 Õðåñâáßíïíôáò ôïí ïñéóìü ìéáò ìåèüäïõ 298 ÁëëÜæïíôáò ôïí åðéóôñåöüìåíï ôýðï ìéáò õðåñâáéíüìåíçò ìåèüäïõ 298 ÁëëÜæïíôáò ôá äéêáéþìáôá ðñïóðÝëáóçò ìéáò õðåñâáéíüìåíçò ìåèüäïõ 299 Ðáãßäá: ÕðÝñâáóç åíáíôßïí õðåñöüñôùóçò 299 Ï äçìéïõñãüò super 300 Ï äçìéïõñãüò this 301 ÓõìâïõëÞ: ¸íá áíôéêåßìåíï ìéáò ðáñÜãùãçò êëÜóçò Ý÷åé ðåñéóóüôåñïõò áðü Ýíáí ôýðïõò Ðáãßäá: Ïé üñïé “Õðüêëáóç” êáé “ÕðåñêëÜóç” 303 ÐáñÜäåéãìá: Ìéá âåëôéùìÝíç êëÜóç StringTokenizer I 304 ÅÍÈÕËÁÊÙÓÇ ÊÁÉ ÊËÇÑÏÍÏÌÉÊÏÔÇÔÁ 306 Ðáãßäá: ×ñÞóç ôùí éäéùôéêþí ìåôáâëçôþí óôéãìéüôõðïõ áðü ôç âáóéêÞ êëÜóç 307 Ðáãßäá: Ïé éäéùôéêÝò ìÝèïäïé äåí êëçñïíïìïýíôáé êáé ìÜëéóôá áðïôåëåóìáôéêÜ 308 ÐñïóôáôåõìÝíç ÐñïóðÝëáóç êáé ÐñïóðÝëáóç ðáêÝôïõ 308 Ðáãßäá: Îå÷íþíôáò ôï ðñïåðéëåãìÝíï ðáêÝôï 309 Ðáãßäá: ¸íáò ðåñéïñéóìüò óôçí ðñïóôáôåõìÝíç ðñïóðÝëáóç I 310 ÐÑÏÃÑÁÌÌÁÔÉæÏÍÔÁÓ ÌÅ ÊËÇÑÏÍÏÌÉÊÏÔÇÔÁ 312 ÓõìâïõëÞ: Ïé óôáôéêÝò ìåôáâëçôÝò êëçñïíïìïýíôáé 312 ÓõìâïõëÞ: “åßíáé” åíáíôßïí “Ý÷åé” 312

302

255


xix

Ðåñéå÷üìåíá

Ç ðñïóðÝëáóç ìéáò ìÝèïäï ôçò âáóéêÞò êëÜóçò ðïõ Ý÷åé åðáíïñéóôåß Ðáãßäá: Äå ìðïñåßôå íá ÷ñçóéìïðïéåßôå ðïëëáðëÝò super 313 Ç êëÜóç Object 314 Ï óùóôüò ôñüðïò ïñéóìïý ôçò ìåèüäïõ equals 315 ÓõìâïõëÞ: getClass åíáíôßïí instanceof I 316 Ðåñßëçøç Êåöáëáßïõ 319 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 320 Åñãáóßåò ðñïãñáììáôéóìïý 322

312

ÊÅÖÁËÁÉÏ 8 ÐÏËÕÌÏÑÖÉÓÌÏÓ ÊÁÉ ÁÖÇÑÇÌÅÍÅÓ ÊËÁÓÅÉÓ 8.1

8.2

327 ÐÏËÕÌÏÑÖÉÓÌÏÓ 328 ÊáèõóôåñçìÝíç äÝóìåõóç 328 Ï ôñïðïðïéçôÞò final 330 ÐáñÜäåéãìá: Áñ÷åßá ðùëÞóåùí 330 ÊáèõóôåñçìÝíç äÝóìåõóç ìå ôç ìÝèïäï toString 336 Ðáãßäá: Ìå ôéò óôáôéêÝò ìåèüäïõò äå ÷ñçóéìïðïéåßôáé ç êáèõóôåñçìÝíç äÝóìåõóç I 336 ÌåôáôñïðÞ ôýðïõ ðñïò ôá åðÜíù êáé ðñïò ôá êÜôù 337 Ðáãßäá: ÌåôáôñïðÞ ôýðïõ ðñïò ôá êÜôù 339 ÓõìâïõëÞ: ÅëÝã÷ïíôáò ôçí åãêõñüôçôá ìéáò ìåôáôñïðÞò ôýðïõ ðñïò ôá êÜôù I 340 Ìéá ðñþôç ìáôéÜ óôç ìÝèïäï clone 341 Ðáãßäá: ÌåñéêÝò öïñÝò ï åðéóôñåöüìåíïò ôýðïò ôçò ìåèüäïõ clone åßíáé ï Object 342 Ðáãßäá: Ðåñéïñéóìüé ôùí äçìéïõñãþí áíôéãñάφων I 343 ÁÖÇÑÇÌÅÍÅÓ ÊËÁÓÅÉÓ 345 ÁöçñçìÝíåò êëÜóåéò 345 Ðáãßäá: Äå ìðïñåßôå íá äçìéïõñãåßôå óôéãìéüôõðá ìéáò áöçñçìÝíçò êëÜóçò 349 ÓõìâïõëÞ: Ìéá áöçñçìÝíç êëÜóç åßíáé Ýíáò ôýðïò 349 Ðåñßëçøç Êåöáëáßïõ 350 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 350 Åñãáóßåò ðñïãñáììáôéóìïý 351

ÊÅÖÁËÁÉÏ 9 ×ÅÉÑÉÓÌÏÓ ÅÎÁÉÑÅÓÅÙÍ 9.1

9.2

9.3

355 ÔÁ ÂÁÓÉÊÁ ÃÉÁ ÔÏ ×ÅÉÑÉÓÌÏ ÔÙÍ ÅÎÁÉÑÅÓÅÙÍ 356 ÐáñÜäåéãìá: ¸íá áðëü ðáñÜäåéãìá ãéá ôï ÷åéñéóìü ôùí åîáéñÝóåùí 357 Ìç÷áíéóìüò try-throw-catch 361 ÊëÜóåéò åîáéñÝóåùí 363 ÊëÜóåéò åîáéñÝóåùí ðïõ ïñßæïíôáé óå ôõðéêÜ ðáêÝôá ôçò Java 364 Ïñßæïíôáò êëÜóåéò åîáéñÝóåùí 365 ÓõìâïõëÞ: ÄéáôçñÞóôå ôç getMessage 368 ÓõìâïõëÞ: Ìéá êëÜóç åîáßñåóçò ìðïñåß íá ìåôáöÝñåé Ýíá ìÞíõìá ïðïéïõäÞðïôå ôýðïõ ÐïëëáðëÜ ìðëïê catch 374 Ðáãßäá: Íá óõëëáìâÜíåôå ðñþôá ôéò ðéï óõãêåêñéìÝíåò åîáéñÝóåéò 375 ÐÑÏÊÁËÙÍÔÁÓ ÅÎÁÉÑÅÓÅÉÓ ÓÅ ÌÅÈÏÄÏÕÓ 377 Ðñïêáëþíôáò ìéá åîáßñåóç óå ìéá ìÝèïäï 377 Äçëþíïíôáò åîáéñÝóåéò óå ìéá öñÜóç throws 378 ÅîáéñÝóåéò óôïí êáíüíá óýëëçøçò Þ äÞëùóçò 381 Ç öñÜóç throws óå ðáñáãùãÝò êëÜóåéò 382 Ðüôå íá ÷ñçóéìïðïéåßôå åîáéñÝóåéò 382 Ðñïãñáììáôéóìüò êáèïäçãïýìåíïò áðü óõìâÜíôá I 384 ÐÅÑÉÓÓÏÔÅÑÅÓ ÐÑÏÃÑÁÌÌÁÔÉÓÔÉÊÅÓ ÔÅ×ÍÉÊÅÓ ÃÉÁ ÔÏ ×ÅÉÑÉÓÌÏ ÔÙÍ ÅÎÁÉÑÅÓÅÙÍ Ðáãßäá: ÅöùëéáóìÝíá try-ìðëïê catch 384 Ôï ìðëïê finally I 384 Ðñïêáëþíôáò îáíÜ ìéá åîáßñåóç I 385 Ç êëÜóç AssertionError I 386 ×åéñéóìüò åîáéñÝóåùí ìå ôçí êëÜóç Scanner 386 ÓõìâïõëÞ: Âñü÷ïé åëåã÷üìåíïé áðü åîáéñÝóåéò 387 ArrayIndexOutOfBoundsException 388 Ðåñßëçøç Êåöáëáßïõ 389 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 389 Åñãáóßåò ðñïãñáììáôéóìïý 392

ÊÅÖÁËÁÉÏ 10 ÅÉÓÏÄÏÓ/ÅÎÏÄÏÓ ÁÑ×ÅÉÙÍ 10.1

10.2

395 ÅÉÓÁÃÙÃÇ ÓÔÇÍ ÅÉÓÏÄÏ/ÅÎÏÄÏ ÁÑ×ÅÉÙÍ ÑïÝò 396 Áñ÷åßá êåéìÝíïõ êáé äõáäéêÜ áñ÷åßá 397 ÁÑ×ÅÉÁ ÊÅÉÌÅÍÏÕ 397 ÃñÜöïíôáò äåäïìÝíá óå Ýíá áñ÷åßï êåéìÝíïõ

396

397

370

384


xx

Ðåñéå÷üìåíá

10.3 10.4

10.5

Ðáãßäá: ¸íá ìðëïê try åßíáé ìðëïê 401 Ðáãßäá: Áíôéêáèéóôþíôáò Ýíá áñ÷åßï åîüäïõ 402 Ðñïóáñôþíôáò äåäïìÝíá óå Ýíá áñ÷åßï êåéìÝíïõ 402 ÓõìâïõëÞ: Ç toString äéåõêïëýíåé ôçí Ýîïäï óå áñ÷åßá êåéìÝíïõ 402 ÄéáâÜæïíôáò äåäïìÝíá áðü Ýíá áñ÷åßï êåéìÝíïõ 403 ÄéáâÜæïíôáò Ýíá áñ÷åßï êåéìÝíïõ ÷ñçóéìïðïéþíôáò ôçí êëÜóç Scanner 404 ÅëÝã÷ïíôáò ãéá ôï ôÝëïò åíüò áñ÷åßïõ êåéìÝíïõ ìå ôç ÷ñÞóç ôçò êëÜóçò Scanner 405 ÄéáâÜæïíôáò Ýíá áñ÷åßï êåéìÝíïõ ÷ñçóéìïðïéþíôáò ôçí êëÜóç BufferedReader 411 ÓõìâïõëÞ: ÁíÜãíùóç áñéèìþí ìå ôçí êëÜóç BufferedReader 413 ÅëÝã÷ïíôáò ãéá ôï ôÝëïò åíüò áñ÷åßïõ êåéìÝíïõ ìå ôçí êëÜóç BufferedReader 414 Ïíüìáôá äéáäñïìþí 415 ÊëÞóåéò åìöùëéáóìÝíùí äçìéïõñãþí 416 System.in,System.out êáé System.err 416 Ç ÊËÁÓÇ File 418 Ðñïãñáììáôßæïíôáò ìå ôçí êëÜóç File 418 ÄÕÁÄÉÊÁ ÁÑ×ÅÉÁ I 421 ÃñÜöïíôáò áðëÜ äåäïìÝíá óå Ýíá äõáäéêü áñ÷åßï 422 UTF êáé writeUTF 425 ÄéáâÜæïíôáò áðëÜ äåäïìÝíá áðü Ýíá äõáäéêü áñ÷åßï 425 ÅëÝã÷ïíôáò ãéá ôï ôÝëïò åíüò äõáäéêïý áñ÷åßïõ 429 Ðáãßäá: ÅëÝã÷ïíôáò ãéá ôï ôÝëïò åíüò äõáäéêïý áñ÷åßïõ ìå ëÜèïò ôñüðï 430 ÄõáäéêÞ åßóïäïò/Ýîïäïò áíôéêåéìÝíùí 430 Ç äéåðáöÞ Serializable 433 Ðáãßäá: ÓõíäõÜæïíôáò äéáöïñåôéêïýò ôýðïõò êëÜóåùí óôï ßäéï áñ÷åßï 433 Áíôéêåßìåíá ðéíÜêùí óå äõáäéêÜ áñ÷åßá 433 ÔÕ×ÁÉÁ ÐÑÏÓÐÅËÁÓÇ ÄÕÁÄÉÊÙÍ ÁÑ×ÅÉÙÍ I 435 ÁíÜãíùóç êáé åããñáöÞ äåäïìÝíùí óôï ßäéï áñ÷åßï 435 Ðáãßäá: ¸íá áñ÷åßï ôõ÷áßáò ðñïóðÝëáóçò äåí åßíáé áðáñáßôçôï íá îåêéíÜåé êåíü 439 Ðåñßëçøç Êåöáëáßïõ 439 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 440 Åñãáóßåò ðñïãñáììáôéóìïý 443

ÊÅÖÁËÁÉÏ 11 ÁÍÁÄÑÏÌÇ 11.1

11.2

11.3

445 ÁÍÁÄÑÏÌÉÊÅÓ ÌÅÈÏÄÏÉ void 446 ÐáñÜäåéãìá: ÊÜèåôïé áñéèìïß 447 Ðáñáêïëïõèþíôáò ôçí åîÝëéîç ìéáò áíáäñïìéêÞò êëÞóçò 448 Ìéá ðéï ðñïóåêôéêÞ åîÝôáóç ôçò áíáäñïìÞò 450 Ðáãßäá: ÁôÝñìïíç áíáäñïìÞ 451 Óôïßâåò ãéá áíáäñïìÞ I 453 Ðáãßäá: Õðåñ÷åßëéóç óôïßâáò I 454 ÁíáäñïìÞ åíáíôßïí åðáíÜëçøçò 454 ÁÍÁÄÑÏÌÉÊÅÓ ÌÅÈÏÄÏÉ ÐÏÕ ÅÐÉÓÔÑÅÖÏÕÍ ÌÉÁ ÔÉÌÇ 455 ÃåíéêÞ ìïñöÞ áíáäñïìéêÞò ìåèüäïõ ðïõ åðéóôñÝöåé ìéá ôéìÞ 455 ÐáñÜäåéãìá: Ìéá áêüìá ìÝèïäïò ãéá ôçí ýøùóç åíüò áñéèìïý óå äýíáìç ÓÊÅÐÔÏÌÅÍÏÉ ÁÍÁÄÑÏÌÉÊÁ 458 Ôå÷íéêÝò áíáäñïìéêïý ó÷åäéáóìïý 458 ÄõáäéêÞ áíáæÞôçóç I 459 Áðïäïôéêüôçôá ôçò äõáäéêÞò áíáæÞôçóçò I 464 Ðåñßëçøç Êåöáëáßïõ 465 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 465 Åñãáóßåò ðñïãñáììáôéóìïý 468

ÊÅÖÁËÁÉÏ 12 UML ÊÁÉ ÐÑÏÔÕÐÁ 12.1

12.2

471 UML 472 Ç Éóôïñßá ôçò UML 472 Ôá äéáãñÜììáôá êëÜóåùí ôçò UML 473 ÁëëçëåðéäñÜóåéò ìåôáîý ôùí êëÜóåùí 473 ÄéáãñÜììáôá êëçñïíïìéêüôçôáò 473 Ðåñéóóüôåñá ãéá ôç UML 475 ÐÑÏÔÕÐÁ 475 Ôï ðñüôõðï ðñïóáñìïãÝáò I 476 Ôï ðñüôõðï ìïíôÝëï - ðñïâïëÞ - åëåãêôÞò I 476 ÐáñÜäåéãìá: ¸íá ðñüôõðï ôáîéíüìçóçò 477 Ðåñéïñéóìïß óôï ðñüôõðï ôáîéíüìçóçò 481 Áðïôåëåóìáôéêüôçôá ôïõ ðñüôõðïõ ôáîéíüìçóçò I 482 ÓõìâïõëÞ: Óçìåéïëïãßá êáé ðñüôõðá 482

455


Ðåñéå÷üìåíá

Öïñìáëéóìüò ðñïôýðùí I 482 Ðåñßëçøç Êåöáëáßïõ 482 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò Åñãáóßåò ðñïãñáììáôéóìïý 484

xxi

483

ÊÅÖÁËÁÉÏ 13 ÄÉÅÐÁÖÅÓ ÊÁÉ ÅÓÙÔÅÑÉÊÅÓ ÊËÁÓÅÉÓ 13.1

13.2

13.3

487 ÄÉÅÐÁÖÅÓ 488 ÄéåðáöÝò 488 ÁöçñçìÝíåò êëÜóåéò ðïõ õëïðïéïýí äéåðáöÝò 490 ÐáñáãùãÝò äéåðáöÝò 490 Ðáãßäá: Óôéò äéåðáöÝò äåí åðéâÜëëïíôáé óçìáóéïëïãéêïß êáíüíåò 492 Ç ÄéåðáöÞ Comparable 492 ÐáñÜäåéãìá: ×ñçóéìïðïéþíôáò ôç äéåðáöÞ Comparable 494 Ïñéóìïß óôáèåñþí óå äéåðáöÝò 497 Ðáãßäá: Áóýìâáôåò ÄéåðáöÝò 498 Ç äéåðáöÞ Serializable I 500 Ç äéåðáöÞ Cloneable 500 ÁÐËÅÓ ×ÑÇÓÅÉÓ ÔÙÍ ÅÓÙÔÅÑÉÊÙÍ ÊËÁÓÅÙÍ 503 ÂïçèçôéêÝò êëÜóåéò 503 ÓõìâïõëÞ: Ïé åóùôåñéêÝò êáé ïé åîùôåñéêÝò êëÜóåéò äéêáéïýíôáé íá ðñïóðåëÜõíïõí ôá éäéùôéêÜ ôïõò ìÝëç ç ìéá ôçò Üëëçò 504 ÐáñÜäåéãìá: Ìéá êëÜóç ãéá ôñáðåæéêïýò ëïãáñéáóìïýò 504 Ôï áñ÷åßï .class ìéáò åóùôåñéêÞò êëÜóçò 507 Ðáãßäá: ¢ëëåò ÷ñÞóåéò ôùí åóùôåñéêþí êëÜóåùí 507 ÐÅÑÉÓÓÏÔÅÑÁ Ó×ÅÔÉÊÁ ÌÅ ÔÉÓ ÅÓÙÔÅÑÉÊÅÓ ÊËÁÓÅÉÓ 507 ÓôáôéêÝò åóùôåñéêÝò êëÜóåéò 508 Äçìüóéåò åóùôåñéêÝò êëÜóåéò 508 ÓõìâïõëÞ: ÊÜíïíôáò ìéá áíáöïñÜ óå ìéá ìÝèïäï ôçò åîùôåñéêÞò êëÜóçò 510 ÅìöùëéÜæïíôáò åóùôåñéêÝò êëÜóåéò 511 ÅóùôåñéêÝò êëÜóåéò êáé êëçñïíïìéêüôçôá 511 Áíþíõìåò êëÜóåéò 512 ÓõìâïõëÞ: Ãéáôß íá ÷ñçóéìïðïéïýìå åóùôåñéêÝò êëÜóåéò; 514 Ðåñßëçøç Êåöáëáßïõ 514 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 515 Åñãáóßåò ðñïãñáììáôéóìïý 518

ÊÅÖÁËÁÉÏ 14 ÃÅÍÉÊÅÕÌÅÍÅÓ ÊËÁÓÅÉÓ ÊÁÉ ÌÅÈÏÄÏÉ, ÊÁÉ Ç ÊËÁÓÇ ArrayList 14.1

14.2

521 Ç ÊËÁÓÇ ArrayList 522 ×ñçóéìïðïéþíôáò ôçí êëÜóç ArrayList 523 ÓõìâïõëÞ: Ðåñßëçøç ãéá ôçí ðñïóèÞêç óôïé÷åßùí óå ìéá ArrayList 526 ÌÝèïäïé ôçò êëÜóçò ArrayList 527 Ï âñü÷ïò “For-each” 529 ÐáñÜäåéãìá: Âáèìïëïãßá óôï ãêïëö 532 ÓõìâïõëÞ: Íá ×ñçóéìïðïéåßôáé ôçí trimToSize ãéá åîïéêïíüìçóç ìíÞìçò 534 Ðáãßäá: Ç ìÝèïäïò clone äçìéïõñãåß Ýíá ñç÷ü áíôßãñáöï I 534 Ç êëÜóç Vector 535 ÐáñáìåôñïðïéçìÝíåò Þ ãåíéêåõìÝíåò êëÜóåéò 535 Ðáãßäá: Ìç ðáñáìåôñïðïéçìÝíåò êëÜóåéò ArrayList êáé Vector 535 ÃÅÍÉÊÅÕÌÅÍÅÓ ÊËÁÓÅÉÓ ÊÁÉ ÌÅÈÏÄÏÉ 535 Ôá âáóéêÜ ãéá ôïõò ãåíéêåõìÝíïõò ïñéóìïýò 535 ÓõìâïõëÞ: Ìåôáãëþôôéóç ìå ôçí åðéëïãÞ - Xlint 537 ÐáñÜäåéãìá: Ìéá ãåíéêåõìÝíç êëÜóç ãéá äéáôåôáãìÝíç æåýãç 537 Ðáãßäá: Ôï üíïìá åíüò äçìéïõñãïý ìéáò ãåíéêÞò êëÜóçò äåí ðåñéëáìâÜíåé êáíÝíá ðáñáìåôñéêÜ ïñéæüìåíï ôýðï 540 Ðáãßäá: Äå ìðïñåßôå íá åéóÜãåôå Ýíáí ðñùôáñ÷éêü ôýðï óôç èÝóç åíüò ðáñáìåôñéêÜ ïñéæüìåíïõ ôýðïõ 540 Ðáãßäá: ¸íáò ðáñáìåôñéêÜ ïñéæüìåíïò ôýðïò äå ìðïñåß íá ÷ñçóéìïðïéåßôáé ïðïõäÞðïôå ÷ñçóéìïðïéåßôáé Ýíá üíïìá ôýðïõ 541 Ðáãßäá: ¸íáò âáóéêüò ôýðïò ðßíáêá äå ìðïñåß íá äßíåé õðüóôáóç óå ìéá ãåíéêåõìÝíç êëÜóç 541 ÓõìâïõëÞ: Ï ïñéóìüò ìéáò êëÜóçò ìðïñåß íá ðåñéÝ÷åé ðåñéóóüôåñïõò áðü Ýíáí ðáñáìåôñéêÜ ïñéæüìåíïõò ôýðïõò 542 Ðáãßäá: Ìéá êëÜóç åîáßñåóçò äå ìðïñåß íá ïñéóôåß ùò ãåíéêåõìÝíç êëÜóç 543 Ðåñéïñéóìïß óôïõò ðáñáìåôñéêÜ ïñéæüìåíïõò ôýðïõò 544 ÓõìâïõëÞ: ÃåíéêåõìÝíåò äéåðáöÝò 546 ÃåíéêåõìÝíåò ìÝèïäïé I 546 Êëçñïíïìéêüôçôá ìå ãåíéêåõìÝíåò êëÜóåéò I 547


xxii

Ðåñéå÷üìåíá

Ðåñßëçøç Êåöáëáßïõ 549 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò Åñãáóßåò ðñïãñáììáôéóìïý 550

549

ÊÅÖÁËÁÉÏ 15 ÓÕÍÄÅÄÅÌÅÍÅÓ ÄÏÌÅÓ ÄÅÄÏÌÅÍÙÍ 15.1

15.2

15.3

15.4

15.5

553 ÓÕÍÄÅÄÅÌÅÍÅÓ ËÉÓÔÅÓ ÓÔÇ JAVA 555 ÐáñÜäåéãìá: Ìéá áðëÞ êëÜóç óõíäåäåìÝíçò ëßóôáò 555 Åñãáóßá ìå óõíäåäåìÝíåò ëßóôåò 558 Ðáãßäá: ÄéáññïÝò óôçí éäéùôéêüôçôá ìéáò êëÜóçò 561 ÅóùôåñéêÝò êëÜóåéò êüìâùí 562 ÐáñÜäåéãìá: Ìéá ãåíéêåõìÝíç óõíäåäåìÝíç ëßóôá 565 Ðáãßäá: ×ñçóéìïðïéþíôáò ôï Node áíôß ôïõ Node<T> 569 Ç ÌÝèïäïò equals ãéá óõíäåäåìÝíåò ëßóôåò 569 ÄÇÌÉÏÕÑÃÏÉ ÁÍÔÉÃÑÁÖÙÍ ÊÁÉ Ç ÌÅÈÏÄÏÓ clone I 570 Áðëïß äçìéïõñãïß áíôéãñÜöùí êáé ìÝèïäïé clone I 570 Ðáãßäá: Ç ìÝèïäïò clone åßíáé ÐñïóôáôåõìÝíç ìÝóá óôçí Object I 572 ÅîáéñÝóåéò I 573 ÓõìâïõëÞ: ×ñçóéìïðïéÞóôå Ýíáí ðåñéïñéóìü óôïí ðáñáìåôñéêÜ ïñéæüìåíï ôýðï ãéá íá Ý÷åôå ìéá êáëýôåñç ìÝèïäï clone I 573 ÐáñÜäåéãìá: Ìéá óõíäåäåìÝíç ëßóôá ìå ìéá ìÝèïäï clone ðïõ äçìéïõñãåß Ýíá âáèý áíôßãñáöï 576 ÓõìâïõëÞ: Ç êëùíïðïßçóç áíÞêåé óôéò ðåñéðôþóåéò ðïõ éó÷ýåé ôï “¼ëá Þ Ôßðïôá” 579 ÅÐÁÍÁËÇÐÔÅÓ 579 Ïñßæïíôáò ìéá êëÜóç åðáíáëÞðôç 579 ÐñïóèÝôïíôáò êáé äéáãñÜöïíôáò êüìâïõò 583 ÐÁÑÁËËÁÃÅÓ ÌÉÁÓ ÓÕÍÄÅÄÅÌÅÍÇÓ ËÉÓÔÁÓ 585 ÄéðëÜ óõíäåäåìÝíç ëßóôá 586 Ç äïìÞ äåäïìÝíùí óôïßâá 586 Ç äïìÞ äåäïìÝíùí ïõñÜ áíáìïíÞò 587 ÄÅÍÔÑÁ 589 Éäéüôçôåò åíüò äÝíôñïõ 589 ÐáñÜäåéãìá: Ìéá êëÜóç äõáäéêïý äÝíôñïõ áíáæÞôçóçò I 591 Áðïôåëåóìáôéêüôçôá ôùí äõáäéêþí äÝíôñùí áíáæÞôçóçò I 595 Ðåñßëçøç Êåöáëáßïõ 596 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 596 Åñãáóßåò ðñïãñáììáôéóìïý 599

ÊÅÖÁËÁÉÏ 16 ÓÕËËÏÃÅÓ ÊÁÉ ÅÐÁÍÁËÇÐÔÅÓ 16.1

16.2

601 ÓÕËËÏÃÅÓ 602 ÌðáëáíôÝñ 602 Ôï ðëáßóéï åñãáóßáò ôùí óõëëïãþí 603 Ðáãßäá: ÐñïáéñåôéêÝò ëåéôïõñãßåò 613 ÓõìâïõëÞ: Áíôéìåôþðéóç üëùí áõôþí ôùí åîáéñÝóåùí 613 Åíõðüóôáôåò êëÜóåéò óõëëïãÞò 614 ÄéáöïñÝò áíÜìåóá óôçí êëÜóç ArrayList<T> êáé ôçí êëÜóç Vector<T> I 618 Ìç ðáñáìåôñïðïéçìÝíç Ýêäïóç ôïõ ðëáéóßïõ åñãáóßáò ôùí óõëëïãþí I 619 Ðáãßäá: ÐáñÜëçøç ôïõ <Ô> 619 Ìéá ìáôéÜ óôï ðëáßóéï åñãáóßáò ôùí áðåéêïíßóåùí I 619 ÅÐÁÍÁËÇÐÔÅÓ 619 Ç Ýííïéá ôïõ åðáíáëÞðôç 620 Ç äéåðáöÞ Iterator<T> 620 ÓõìâïõëÞ: Ïé âñü÷ïé for-each ùò åðáíáëÞðôåò 622 ÅðáíáëÞðôåò ëßóôáò 623 Ðáãßäá: Ç ìÝèïäïò next åðéóôñÝöåé ìéá áíáöïñÜ 624 ÓõìâïõëÞ: Ïñßæïíôáò ôéò äéêÝò óáò êëÜóåéò åðáíáëÞðôç 626 Ðåñßëçøç Êåöáëáßïõ 626 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 626 Åñãáóßåò ðñïãñáììáôéóìïý 627

ÊÅÖÁËÁÉÏ 17 SWING I 17.1 17.2

631 ÐÑÏÃÑÁÌÌÁÔÉÓÌÏÓ ÊÁÈÏÄÇÃÏÕÌÅÍÏÓ ÁÐÏ ÓÕÌÂÁÍÔÁ 632 ÓõìâÜíôá êáé áêñïáôÝò 632 ÊÏÕÌÐÉÁ, ÓÕÌÂÁÍÔÁ ÊÁÉ ÁËËÁ ÂÁÓÉÊÁ ÈÅÌÁÔÁ ÔÇÓ ÂÉÂÉÏÈÇÊÇÓ SWING 634 ÐáñÜäåéãìá: ¸íá áðëü ðáñÜèõñï 634 Ðáãßäá: ÅÜí îå÷Üóåôå íá ðñïãñáììáôßóåôå ôï êïõìðß êëåßóéìï ôïõ ðáñáèýñïõ 637 ÊïõìðéÜ 638 ÁêñïáôÝò åíåñãåéþí êáé áêñïáôÝò óõìâÜíôùí 639


Ðåñéå÷üìåíá

17.3

17.4

17.5

17.6

Ðáãßäá: ÁëëÜæïíôáò ôçí åðéêåöáëßäá ôçò actionPerformed 640 ÓõìâïõëÞ: Ôåñìáôßæïíôáò Ýíá ðñüãñáììá Swing 640 ÐáñÜäåéãìá: Ìéá âåëôéùìÝíç Ýêäïóç ôïõ ðñþôïõ ìáò ðáñáäåßãìáôïò Swing GUI 641 ÅôéêÝôåò 643 ×ñþìá 643 ÐáñÜäåéãìá: ¸íá GUI ìå ìéá åôéêÝôá êáé ìå ÷ñþìá 644 ÐÅÑÉÅÊÔÅÓ ÊÁÉ ÄÉÁ×ÅÉÑÉÓÔÅÓ ÄÉÁÔÁÎÇÓ 646 Äéá÷åéñéóôÝò äéÜôáîçò ðåñéèùñßïõ 646 Äéá÷åéñéóôÝò äéÜôáîçò ñïÞò 649 Äéá÷åéñéóôÝò äéÜôáîç ðëÝãìáôïò 650 Ôïìåßò 653 ÐáñÜäåéãìá: Ìéá ôñß÷ñùìç êáôáóêåõÞ ìå ôïìåßò 653 Ç êëÜóç Container 657 ÓõìâïõëÞ: Íá ãñÜöåôå ÷ùñéóôÜ êþäéêá ãéá ôçí åìöÜíéóç êáé ôéò åíÝñãåéåò åíüò GUI Ôï ðñüôõðï ìïíôÝëï - ðñïâïëÞ - åëåãêôÞò I 659 ÌÅÍÏÕ ÊÁÉ ÊÏÕÌÐÉÁ 659 ÐáñÜäåéãìá: ¸íá GUI ìå ìåíïý 660 ÃñáììÝò ìåíïý, ìåíïý êáé óôïé÷åßá ìåíïý 660 ÅìöùëéáóìÝíá ìåíïý I 663 Ç êëÜóç AbstractButton 663 Ç ìÝèïäïò setActionCommand I 665 ÁêñïáôÝò ùò åóùôåñéêÝò êëÜóåéò I 666 ÐÅÄÉÁ ÊÅÉÌÅÍÏÕ ÊÁÉ ÐÅÑÉÏ×ÅÓ ÊÅÉÌÅÍÏÕ 668 Ðåñéï÷Ýò êåéìÝíïõ êáé ðåäßá êåéìÝíïõ 669 ÓõìâïõëÞ: Äßíïíôáò ìéá åôéêÝôá óå Ýíá ðåäßï êåéìÝíïõ 673 ÓõìâïõëÞ: ÅéóÜãïíôáò êáé åîÜãïíôáò áñéèìïýò 674 Ìéá áñéèìïìç÷áíÞ óå Swing 674 JOptionPane 678 Ôá âáóéêÜ 678 ÅñùôÞóåéò íáé/ü÷é ìå ôç JOptionPane 682 Ðåñßëçøç Êåöáëáßïõ 683 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 684 Åñãáóßåò ðñïãñáììáôéóìïý 689

ÊÅÖÁËÁÉÏ 18 ÌÉÊÑÏÅÖÁÑÌÏÃÅÓ 18.1

18.2

18.3

691 ÌÉÁ ÓÕÍÔÏÌÇ ÅÉÓÁÃÙÃÇ ÓÔÇÍ HTML 692 ÅíôïëÝò ìïñöïðïßçóçò HTML 693 Ðåñßãñáììá åíüò åããñÜöïõ HTML 694 ÓõìâïõëÞ: Ó÷üëéá 696 Õðåñóýíäåóìïé 696 ÅéóáãùãÞ ìéáò åéêüíáò 698 Ðáãßäá: ¼ôáí äå ÷ñçóéìïðïéåßôå ôçí åíôïëÞ áíáíÝùóçò ôïõ öõëëïìåôñçôÞ óáò ÓõìâïõëÞ: ¢ëëåò ãëþóóåò ãéá ôç óõããñáöÞ éóôïóåëßäùí I 700 ÐÑÏÃÑÁÌÌÁÔÉæÏÍÔÁÓ ÔÉÓ ÌÉÊÑÏÅÖÁÑÌÏÃÅÓ 700 Ïñßæïíôáò ìéá ìéêñïåöáñìïãÞ 700 Åêôåëþíôáò ìéá ìéêñïåöáñìïãÞ 702 Ôá ìåíïý óå Ýíá JApplet 703 ÓõìâïõëÞ: ÌåôáôñÝðïíôáò ìéá åöáñìïãÞ Swing óå ìéêñïåöáñìïãÞ 703 ÐñïóèÞêç åéêïíéäßùí óå ìéá ìéêñïåöáñìïãÞ I 706 ÌÉÊÑÏÅÖÁÑÌÏÃÅÓ ÓÅ ÅÃÃÑÁÖÁ HTML 707 ÅéóÜãïíôáò ìéá ìéêñïåöáñìïãÞ óå Ýíá Ýããñáöï HTML 708 Åêôåëþíôáò ìéá ìéêñïåöáñìïãÞ óôï äéáäßêôõï I 710 Ðáãßäá: Ç ÷ñÞóç åíüò öõëëïìåôñçôÞ éóôïý ðáëáéïý ôýðïõ 710 ÌéêñïåöáñìïãÝò êáé áóöÜëåéá I 710 Ðåñßëçøç Êåöáëáßïõ 711 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 711 Åñãáóßåò ðñïãñáììáôéóìïý 712

ÊÅÖÁËÁÉÏ 19 SWING II 19.1

19.2

713 ÁÊÑÏÁÔÅÓ ÐÁÑÁÈÕÑÙÍ 714 ÐáñÜäåéãìá: Ìéá åóùôåñéêÞ êëÜóç áêñïáôÞò ðáñáèýñïõ 715 Ç ìÝèïäïò dispose 718 Ðáãßäá: ÅÜí îå÷Üóåôå íá êáëÝóåôå ôç ìÝèïäï setDefaultCloseOperation Ç êëÜóç WindowAdapter 718 ÅÉÊÏÍÉÄÉÁ ÊÁÉ ÃÑÁÌÌÅÓ ÊÕËÉÓÇÓ 724 Åéêïíßäéá 719

718

699

658

xxiii


xxiv

Ðåñéå÷üìåíá

19.3

19.4

19.5

ÃñáììÝò êýëéóçò 724 ÐáñÜäåéãìá: ÓõóôáôéêÜ ðïõ åßíáé ïñáôÜ åíáëëÜî 728 Ç ÊËÁÓÇ GRAPHICS 730 Óýóôçìá óõíôåôáãìÝíùí ãéá ôá áíôéêåßìåíá ãñáöéêþí 730 Ç ìÝèïäïò paint êáé ç êëÜóç Graphics 731 Ó÷åäéáóìüò åëëåßøåùí 735 Ó÷åäéáóìüò ôüîùí 735 ÓôñïããõëåìÝíá ïñèïãþíéá I 738 Ç ìÝèïäïò paintComnponent ãéá ôïìåßò 738 ÅíåñãÜ ó÷Ýäéá êáé ç ìÝèïäïò repaint 740 Ðåñéóóüôåñåò ëåðôïìÝñåéåò ãéá ôçí åíçìÝñùóç åíüò GUI I 742 ×ÑÙÌÁÔÁ 743 Êáèïñßæïíôáò ôï ÷ñþìá ó÷åäßáóçò 743 Ïñßæïíôáò ôá ÷ñþìáôá 744 Ðáãßäá: ×ñÞóç áñéèìþí ôýðïõ double ãéá ôïí ïñéóìü åíüò ÷ñþìáôïò Ôï ðáñÜèõñï äéáëüãïõ JColorChooser 745 ÃÑÁÌÌÁÔÏÓÅÉÑÅÓ ÊÁÉ Ç ÌÅÈÏÄÏÓ drawString 748 Ç ìÝèïäïò drawString 748 ÃñáììáôïóåéñÝò 748 Ðåñßëçøç Êåöáëáßïõ 752 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 752 Åñãáóßåò ðñïãñáììáôéóìïý 755

745

ÊÅÖÁËÁÉÏ 20 Ç JAVA ÄÅÍ Å×ÅÉ ÔÅËÏÓ 20.1

20.2

20.3

ÐáñÜñôçìá ÐáñÜñôçìá ÐáñÜñôçìá ÐáñÜñôçìá ÐáñÜñôçìá ÐáñÜñôçìá

1 2 3 4 5 6

759 ÐÏËÕÍÇÌÁÔÉÓÌÏÓ 760 ÐáñÜäåéãìá: ¸íá GUI ðïõ äåí áðïêñßíåôáé 760 Thread.sleep 761 Ç ìÝèïäïò getGraphics 763 Äéïñèþíïíôáò Ýíá ðñüãñáììá ðïõ äåí áðïêñßíåôáé ìå ôç ÷ñÞóç íçìÜôùí ÐáñÜäåéãìá: ¸íá ðïëõíçìáôéêü ðñüãñáììá 764 Ç êëÜóç Ôhread 764 Ç äéåðáöÞ Runnable I 767 JAVABEANS 769 Ôï ìïíôÝëï ôùí óõóôáôéêþí 769 Ôï ìïíôÝëï JavaBeans 769 ÄÉÁÓÕÍÄÅÓÅÉÓ ÔÇÓ AVA ÌÅ ÂÁÓÅÉÓ ÄÅÄÏÌÅÍÙÍ 770 SQL 770 JDBC 771 Ðåñßëçøç Êåöáëáßïõ 772 ÁðáíôÞóåéò óôéò áóêÞóåéò áõôïáîéïëüãçóçò 772 Åñãáóßåò ðñïãñáììáôéóìïý 772

ËÝîåéò ÊëåéäéÜ 777 Êáíüíåò ðñïôåñáéüôçôáò êáé ðñïóåôáéñéóôéêüôçôáò Ôï óýíïëï ÷áñáêôÞñùí Unicode 781 Ïäçãßåò ìïñöïðïßçóçò ãéá ôçí printf 783 Óýíïøç ôùí êëÜóåùí êáé ôùí äéåðáöþí 785 ÃëùóóÜñéo 833 Áããëéêïåëëçíéêü ãëùóóÜñéï 833 Åëëçíïáããëéêü ãëùóóÜñéï 837

779

764


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.