ºìÁªLinuxÃÅ»§
Linux°ïÖú

Ìá¸ßJava´úÂë¿ÉÖØÓÃÐÔµÄÈý¸ö´ëÊ©

·¢²¼Ê±¼ä:2006-08-09 16:08:26À´Ô´:ºìÁª×÷Õß:iLove.Rain
´ëÊ©Ò»£º¸ÄдÀàµÄʵÀý·½·¨

¡¡¡¡Í¨¹ýÀà¼Ì³ÐʵÏÖ´úÂëÖØÓò»ÊǾ«È·µÄ´úÂëÖØÓü¼Êõ£¬Òò´ËËü²¢²»ÊÇ×îÀíÏëµÄ´úÂëÖØÓûúÖÆ¡£»»¾ä»°Ëµ£¬Èç¹û²»¼Ì³ÐÕû¸öÀàµÄËùÓз½·¨ºÍÊý¾Ý³ÉÔ±£¬ÎÒÃÇÎÞ·¨ÖØÓøÃÀàÀïÃæµÄµ¥¸ö·½·¨¡£¼Ì³Ð×ÜÊÇ´øÀ´Ò»Ð©¶àÓàµÄ·½·¨ºÍÊý¾Ý³ÉÔ±£¬ËüÃÇ×ÜÊÇʹµÃÖØÓÃÀàÀïÃæij¸ö·½·¨µÄ´úÂ븴ÔÓ»¯¡£ÁíÍ⣬ÅÉÉúÀà¶Ô¸¸ÀàµÄÒÀÀµ¹ØϵҲʹµÃ´úÂë½øÒ»²½¸´ÔÓ»¯£º¶Ô¸¸ÀàµÄ¸Ä¶¯¿ÉÄÜÓ°Ïì×ÓÀࣻÐ޸ĸ¸Àà»òÕß×ÓÀàÖеÄÈÎÒâÒ»¸öÀàʱ£¬ÎÒÃǺÜÄѼǵÃÄÄÒ»¸ö·½·¨±»×ÓÀา¸Ç¡¢ÄÄÒ»¸ö·½·¨Ã»Óб»×ÓÀา¸Ç£»×îºó£¬×ÓÀàÖеĸ²¸Ç·½·¨ÊÇ·ñÒªµ÷Óø¸ÀàÖеĶÔÓ¦·½·¨ÓÐʱ²¢²»ÏÔ¶øÒ×¼û¡£

¡¡¡¡Èκη½·¨£¬Ö»ÒªËüÖ´ÐеÄÊÇij¸öµ¥Ò»¸ÅÄîµÄÈÎÎñ£¬¾ÍÆä±¾Éí¶øÑÔ£¬Ëü¾ÍÓ¦¸ÃÊÇÊ×Ñ¡µÄ¿ÉÖØÓôúÂ롣ΪÁËÖØÓÃÕâÖÖ´úÂ룬ÎÒÃDZØÐë»Ø¹éµ½ÃæÏò¹ý³ÌµÄ±à³Ìģʽ£¬°ÑÀàµÄʵÀý·½·¨ÒƳö³ÉΪȫ¾ÖÐԵĹý³Ì¡£ÎªÁËÌá¸ßÕâÖÖ¹ý³ÌµÄ¿ÉÖØÓÃÐÔ£¬¹ý³Ì´úÂëÓ¦¸ÃÏó¾²Ì¬¹¤¾ß·½·¨Ò»Ñù±àд£ºËüÖ»ÄÜʹÓÃ×Ô¼ºµÄÊäÈë²ÎÊý£¬Ö»Äܵ÷ÓÃÆäËûÈ«¾ÖÐԵĹý³Ì£¬²»ÄÜʹÓÃÈκηǾֲ¿µÄ±äÁ¿¡£ÕâÖÖ¶ÔÍⲿÒÀÀµ¹ØϵµÄÏÞÖƼò»¯Á˹ý³ÌµÄÓ¦Óã¬Ê¹µÃ¹ý³ÌÄܹ»·½±ãµØÓÃÓÚÈκεط½¡£µ±È»£¬ÓÉÓÚÕâÖÖ×éÖ¯·½Ê½×ÜÊÇʹµÃ´úÂë¾ßÓиüÇåÎúµÄ½á¹¹£¬¼´Ê¹ÊDz»¿¼ÂÇÖØÓÃÐԵĴúÂëҲͬÑùÄܹ»´ÓÖлñÒæ¡£

¡¡¡¡ÔÚJavaÖУ¬·½·¨²»ÄÜÍÑÀëÀà¶øµ¥¶À´æÔÚ¡£Îª´Ë£¬ÎÒÃÇ¿ÉÒÔ°ÑÏà¹ØµÄ¹ý³Ì×éÖ¯³ÉΪ¶ÀÁ¢µÄÀ࣬²¢°ÑÕâЩ¹ý³Ì¶¨ÒåΪ¹«Óþ²Ì¬·½·¨¡£
¡¡¡¡ÀýÈ磬¶ÔÓÚÏÂÃæÕâ¸öÀࣺ
¡¡¡¡class Polygon {
¡¡¡¡.
¡¡¡¡.
¡¡¡¡public int getPerimeter() {...}
¡¡¡¡public boolean isConvex() {...}
¡¡¡¡public boolean containsPoint(Point p) {...}
¡¡¡¡.
¡¡¡¡.
¡¡¡¡}
¡¡¡¡ÎÒÃÇ¿ÉÒÔ°ÑËü¸Äд³É£º
¡¡¡¡class Polygon {
¡¡¡¡.
¡¡¡¡.
¡¡¡¡public int getPerimeter() {return pPolygon.computePerimeter(this);}
¡¡¡¡public boolean isConvex() {return pPolygon.isConvex(this);}
¡¡¡¡public boolean containsPoint(Point p) {return pPolygon.containsPoint(this, p);}
¡¡¡¡.
¡¡¡¡}
¡¡¡¡ÆäÖУ¬pPolygonÊÇ£º
¡¡¡¡class pPolygon {
¡¡¡¡static public int computePerimeter(Polygon polygon) {...}
¡¡¡¡static public boolean isConvex(Polygon polygon) {...}
¡¡¡¡static public boolean
¡¡¡¡containsPoint(Polygon polygon, Point p) {...}
¡¡¡¡}

¡¡¡¡´ÓÀàµÄÃû×ÖpPolygon¿ÉÒÔ¿´³ö£¬¸ÃÀàËù·â×°µÄ¹ý³ÌÖ÷ÒªÓëPolygonÀàÐ͵ĶÔÏóÓйء£Ãû×ÖÇ°ÃæµÄp±íʾ¸ÃÀàµÄΨһĿµÄÊÇ×éÖ¯¹«Óþ²Ì¬¹ý³Ì¡£ÔÚJavaÖУ¬ÀàµÄÃû×ÖÒÔСд×Öĸ¿ªÍ·ÊÇÒ»ÖַDZê×¼µÄ×ö·¨£¬µ«ÏópPloygonÕâÑùµÄÀàÊÂʵÉϲ¢²»ÌṩÆÕͨJavaÀàµÄ¹¦ÄÜ¡£Ò²¾ÍÊÇ˵£¬Ëü²¢²»´ú±í×ÅÒ»Àà¶ÔÏó£¬ËüÖ»ÊÇJavaÓïÑÔ×éÖ¯´úÂëµÄÒ»ÖÖ»úÖÆ¡£

¡¡¡¡ÔÚÉÏÃæÕâ¸öÀý×ÓÖУ¬¸Ä¶¯´úÂëµÄ×îÖÕЧ¹ûÊÇʹµÃÓ¦ÓÃPolygon¹¦ÄܵĿͻ§´úÂë²»±ØÔÙ´ÓPolygon¼Ì³Ð¡£PolygonÀàµÄ¹¦ÄÜÏÖÔÚÒѾ­ÓÉpPolygonÀàÒÔ¹ý³ÌΪµ¥Î»Ìṩ¡£¿Í»§´úÂëֻʹÓÃ×Ô¼ºÐèÒªµÄ´úÂ룬ÎÞÐè¹ØÐÄPolygonÀàÖÐ×Ô¼º²»ÐèÒªµÄ¹¦ÄÜ¡£µ«Ëü²¢²»Òâζ×ÅÔÚÕâÖÖÐÂʽ¹ý³Ì»¯±à³ÌÖÐÀàµÄ×÷ÓÃÓÐËùÏ÷Èõ¡£Ç¡Ç¡Ïà·´£¬ÔÚ×éÖ¯ºÍ·â×°¶ÔÏóÊý¾Ý³ÉÔ±µÄ¹ý³ÌÖУ¬ÀàÆðµ½Á˲»¿É»òȱµÄ×÷Ó㬶øÇÒÕýÈç±¾ÎĽÓÏÂÀ´Ëù½éÉܵģ¬Ààͨ¹ý¶àÖؽӿÚʵÏÖ¶à̬ÐÔµÄÄÜÁ¦±¾ÉíÒ²´øÀ´ÁË׿ԽµÄ´úÂëÖØÓÃÖ§³Ö¡£È»¶ø£¬ÓÉÓÚÓÃʵÀý·½·¨·â×°´úÂ빦Äܲ¢²»ÊÇÊ×Ñ¡µÄ´úÂëÖØÓÃÊֶΣ¬ËùÒÔͨ¹ýÀà¼Ì³Ð´ïµ½´úÂëÖØÓúͶà̬ÐÔÖ§³ÖÒ²²»ÊÇ×îÀíÏëµÄ¡£

¡¡¡¡´ëÊ©¶þ£º°Ñ²ÎÊýÀàÐ͸ijɽӿÚ

¡¡¡¡ÕýÈçAllen HolubÔÚ¡¶Build User Interfaces for Object-Oriented Systems¡·ÖÐËùÖ¸³öµÄ£¬ÔÚÃæÏò¶ÔÏó±à³ÌÖУ¬´úÂëÖØÓÃÕæÕýµÄÒªµãÔÚÓÚͨ¹ý½Ó¿Ú²ÎÊýÀàÐÍÀûÓöà̬ÐÔ£¬¶ø²»ÊÇͨ¹ýÀà¼Ì³Ð£º

¡¡¡¡¡°¡­¡­ÎÒÃÇͨ¹ý¶Ô½Ó¿Ú¶ø²»ÊǶÔÀà±à³Ì´ïµ½´úÂëÖØÓõÄÄ¿µÄ¡£Èç¹ûij¸ö·½·¨µÄËùÓвÎÊý¶¼ÊǶÔһЩÒÑÖª½Ó¿ÚµÄÒýÓã¬ÄÇôÕâ¸ö·½·¨¾ÍÄܹ»²Ù×÷ÕâÑùһЩ¶ÔÏ󣺵±ÎÒÃDZàд·½·¨µÄ´úÂëʱ£¬ÕâЩ¶ÔÏóµÄÀàÉõÖÁ»¹²»´æÔÚ¡£´Ó¼¼ÊõÉÏ˵£¬¿ÉÖØÓõÄÊÇ·½·¨£¬¶ø²»ÊÇ´«µÝ¸ø·½·¨µÄ¶ÔÏ󡣡±

¡¡¡¡ÔÚ¡°´ëÊ©Ò»¡±µÃµ½µÄ½á¹ûÉÏÓ¦ÓÃHolubµÄ¿´·¨£¬µ±Ä³¿é´úÂëÄܹ»±àдΪ¶ÀÁ¢µÄÈ«¾Ö¹ý³Ìʱ£¬Ö»Òª°ÑËüËùÓÐÀàÐÎʽµÄ²ÎÊý¸ÄΪ½Ó¿ÚÐÎʽ£¬ÎÒÃǾͿÉÒÔ½øÒ»²½Ìá¸ßËüµÄ¿ÉÖØÓÃÄÜÁ¦¡£¾­¹ýÕâ¸ö¸Ä¶¯Ö®ºó£¬¹ý³ÌµÄ²ÎÊý¿ÉÒÔÊÇʵÏÖÁ˸ýӿڵÄËùÓÐÀàµÄ¶ÔÏ󣬶ø²»½ö½öÊÇÔ­À´µÄÀàËù´´½¨µÄ¶ÔÏó¡£ÓÉ´Ë£¬¹ý³Ì½«Äܹ»¶Ô¿ÉÄÜ´æÔڵĴóÁ¿µÄ¶ÔÏóÀàÐͽøÐвÙ×÷¡£

¡¡¡¡ÀýÈ磬¼ÙÉèÓÐÕâÑùÒ»¸öÈ«¾Ö¾²Ì¬·½·¨£º
¡¡¡¡static public boolean contains(Rectangle rect, int x, int y) {...}
¡¡¡¡Õâ¸ö·½·¨ÓÃÓÚ¼ì²éÖ¸¶¨µÄµãÊÇ·ñ°üº¬ÔÚ¾ØÐÎÀïÃæ¡£ÔÚÕâ¸öÀý×ÓÖУ¬rect²ÎÊýµÄÀàÐÍ¿ÉÒÔ´ÓRectangleÀà¸Ä±äΪ½Ó¿ÚÀàÐÍ£¬ÈçÏÂËùʾ£º
¡¡¡¡static public boolean contains(Rectangular rect, int x, int y) {...}
¡¡¡¡¶øRectangular½Ó¿ÚµÄ¶¨ÒåÊÇ£º
¡¡¡¡public interface Rectangular {Rectangle getBounds();}
¡¡¡¡ÏÖÔÚ£¬ËùÓпÉÒÔÃèÊöΪ¾ØÐεÄÀࣨ¼´£¬ÊµÏÖÁËRectangular½Ó¿ÚµÄÀࣩËù´´½¨µÄ¶ÔÏ󶼿ÉÒÔ×÷ΪÌṩ¸øpRectangular.contains()µÄrect²ÎÊý¡£Í¨¹ý·Å¿í²ÎÊýÀàÐ͵ÄÏÞÖÆ£¬ÎÒÃÇʹ·½·¨¾ßÓиüºÃµÄ¿ÉÖØÓÃÐÔ¡£

¡¡¡¡²»¹ý£¬¶ÔÓÚÉÏÃæÕâ¸öÀý×Ó£¬Rectangular½Ó¿ÚµÄgetBounds·½·¨·µ»ØRectangle£¬Äã¿ÉÄܻỳÒÉÕâô×öÊÇ·ñÕæÕýÖµµÃ¡£»»ÑÔÖ®£¬Èç¹ûÎÒÃÇÖªµÀ´«Èë¹ý³ÌµÄ¶ÔÏó»áÔÚ±»µ÷ÓÃʱ·µ»ØÒ»¸öRectangle£¬ÎªÊ²Ã´²»Ö±½Ó´«ÈëRectangleÈ¡´ú½Ó¿ÚÀàÐÍÄØ£¿Ö®ËùÒÔ²»Õâô×ö£¬×îÖØÒªµÄÔ­ÒòÓ뼯ºÏÓйء£ÈÃÎÒÃǼÙÉèÓÐÕâÑùÒ»¸ö·½·¨£º
¡¡¡¡static public boolean areAnyOverlapping(Collection rects) {...}
¡¡¡¡¸Ã·½·¨ÓÃÓÚ¼ì²é¸ø¶¨¼¯ºÏÖеÄÈÎÒâ¾ØÐζÔÏóÊÇ·ñÖصþ¡£ÔÚÕâ¸ö·½·¨µÄÄÚ²¿£¬µ±ÎÒÃÇÓÃÑ­»·ÒÀ´Î·ÃÎʼ¯ºÏÖеĸ÷¸ö¶ÔÏóʱ£¬Èç¹ûÎÒÃDz»ÄܰѶÔÏócast³ÉΪRectangularÖ®ÀàµÄ½Ó¿ÚÀàÐÍ£¬ÓÖÈçºÎÄܹ»·ÃÎʶÔÏóµÄ¾ØÐÎÇøÓòÄØ£¿Î¨Ò»µÄÑ¡ÔñÊǰѶÔÏócast³ÉΪËüÌØÓеÄÀàÐÎʽ£¨ÎÒÃÇÖªµÀËüÓÐÒ»¸ö·½·¨¿ÉÒÔ·µ»Ø¾ØÐΣ©£¬ËüÒâζ×Å·½·¨±ØÐëÊÂÏÈÖªµÀËüËù²Ù×÷µÄ¶ÔÏóÀàÐÍ£¬´Ó¶øʹµÃ·½·¨µÄÖØÓÃÖ»ÏÞÓÚÄǼ¸ÖÖ¶ÔÏóÀàÐÍ¡£¶øÕâÕýÊÇÇ°ÃæÕâ¸ö´ëÊ©Á¦Í¼ÏÈÐбÜÃâµÄÎÊÌ⣡

¡¡¡¡´ëÊ©Èý£ºÑ¡Ôñ×î¼òµ¥µÄ²ÎÊý½Ó¿ÚÀàÐÍ

¡¡¡¡ÔÚʵʩµÚ¶þ¸ö´ëʩʱ£¬Ó¦¸ÃÑ¡ÓÃÄÄÒ»ÖÖ½Ó¿ÚÀàÐÍÀ´È¡´ú¸ø¶¨µÄÀàÐÎʽ£¿´ð°¸ÊÇÄÄÒ»¸ö½Ó¿ÚÍêÈ«Âú×ã¹ý³Ì¶Ô²ÎÊýµÄÐèÇó£¬Í¬Ê±ÓÖ¾ßÓÐ×îÉٵĶàÓà´úÂëºÍÊý¾Ý¡£ÃèÊö²ÎÊý¶ÔÏóÒªÇóµÄ½Ó¿ÚÔ½¼òµ¥£¬ÆäËûÀàʵÏָýӿڵĻú»á¾ÍÔ½´ó----ÓÉ´Ë£¬Æä¶ÔÏóÄܹ»×÷Ϊ²ÎÊýʹÓõÄÀàÒ²Ô½¶à¡£´ÓÏÂÃæÕâ¸öÀý×Ó¿ÉÒÔºÜÈÝÒ׵ؿ´³öÕâÒ»µã£º

¡¡¡¡static public boolean areOverlapping(Window window1, Window window2) {...}
¡¡¡¡Õâ¸ö·½·¨ÓÃÓÚ¼ì²éÁ½¸ö´°¿Ú£¨¼Ù¶¨ÊǾØÐδ°¿Ú£©ÊÇ·ñÖصþ¡£Èç¹ûÕâ¸ö·½·¨Ö»ÒªÇó´Ó²ÎÊý»ñµÃÁ½¸ö´°¿ÚµÄ¾ØÐÎ×ø±ê£¬´ËʱÏàÓ¦µØ¼ò»¯ÕâÁ½¸ö²ÎÊýÊÇÒ»ÖÖ¸üºÃµÄÑ¡Ôñ£º
¡¡¡¡static public boolean areOverlapping(Rectangular rect1, Rectangular rect2) {...}
¡¡¡¡ÉÏÃæµÄ´úÂë¼Ù¶¨WindowÀàÐÍʵÏÖÁËRectangular½Ó¿Ú¡£¾­¹ý¸Ä¶¯Ö®ºó£¬¶ÔÓÚÈκξØÐζÔÏóÎÒÃǶ¼¿ÉÒÔÖØÓø÷½·¨µÄ¹¦ÄÜ¡£

¡¡¡¡ÓÐЩʱºò¿ÉÄÜ»á³öÏÖÃèÊö²ÎÊýÐèÇóµÄ½Ó¿ÚÓµÓÐÌ«¶à·½·¨µÄÇé¿ö¡£´Ëʱ£¬ÎÒÃÇÓ¦¸ÃÔÚÈ«¾ÖÃû³Æ¿Õ¼äÖж¨ÒåÒ»¸öÐµĹ«¹²½Ó¿Ú¹©ÆäËûÃæÁÙͬһÎÊÌâµÄ´úÂëÖØÓá£

¡¡¡¡µ±ÎÒÃÇÐèÒªÏóʹÓÃCÓïÑÔÖеĺ¯ÊýÖ¸ÕëÒ»ÑùʹÓòÎÊýʱ£¬´´½¨Î¨Ò»µÄ½Ó¿ÚÃèÊö²ÎÊýÐèÇóÊÇ×îºÃµÄÑ¡Ôñ¡£ÀýÈ磬¼ÙÉèÓÐÏÂÃæÕâ¸ö¹ý³Ì£º

¡¡¡¡static public void sort(List list, SortComparison comp) {...}

¡¡¡¡¸Ã·½·¨ÔËÓòÎÊýÖÐÌṩµÄ±È½Ï¶ÔÏócomp£¬Í¨¹ý±È½Ï¸ø¶¨ÁбílistÖеĶÔÏóÅÅÐòlistÁÐ±í¡£sort¶Ôcomp¶ÔÏóµÄΨһҪÇóÊÇÒªµ÷ÓÃÒ»¸ö·½·¨½øÐбȽϡ£Òò´Ë£¬SortComparisonÓ¦¸ÃÊÇÖ»´øÓÐÒ»¸ö·½·¨µÄ½Ó¿Ú£º

¡¡¡¡public interface SortComparison {
¡¡¡¡boolean comesBefore(Object a, Object b);
¡¡¡¡}

¡¡¡¡SortComparison½Ó¿ÚµÄΨһĿµÄÔÚÓÚΪsortÌṩһ¸öËüËùÐ蹦ÄܵĹ³×Ó£¬Òò´ËSortComparison½Ó¿Ú²»ÄÜÔÚÆäËûµØ·½ÖØÓá£

¡¡¡¡×ܶøÑÔÖ®£¬±¾ÎÄÈý¸ö´ëÊ©ÊʺÏÓÚ¸ÄÔìÏÖÓеġ¢°´ÕÕÃæÏò¶ÔÏó¹ßÀý±àдµÄ´úÂë¡£ÕâÈý¸ö´ëÊ©ÓëÃæÏò¶ÔÏó±à³Ì¼¼Êõ½áºÏ¾ÍµÃµ½ÁËÒ»ÖÖ¿ÉÔÚÒÔºó±àд´úÂëʱʹÓõÄÐÂʽ´úÂë±àд¼¼Êõ£¬ËüÄܹ»¼ò»¯·½·¨µÄ¸´ÔÓÐÔºÍÒÀÀµ¹Øϵ£¬Í¬Ê±Ìá¸ß·½·¨µÄ¿ÉÖØÓÃÄÜÁ¦ºÍÄÚ²¿Äý¾ÛÁ¦¡£

¡¡¡¡µ±È»£¬ÕâÀïµÄÈý¸ö´ëÊ©²»ÄÜÓÃÓÚÄÇЩÌìÉú¾Í²»ÊʺÏÖØÓõĴúÂë¡£²»ÊʺÏÖØÓõĴúÂëͨ³£³öÏÖÔÚÓ¦ÓõıíÏֲ㡣ÀýÈ磬´´½¨³ÌÐòÓû§½çÃæµÄ´úÂ룬ÒÔ¼°Áª½áµ½ÊäÈëʼþµÄ¿ØÖÆ´úÂ룬¶¼ÊôÓÚÄÇÖÖÔÚ³ÌÐòºÍ³ÌÐòÖ®¼äǧ²îÍò±ðµÄ´úÂ룬ÕâÖÖ´úÂ뼸ºõ²»¿ÉÄÜÖØÓá£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ