해당 분류 : 자바에 대한 이야기    import란 무엇인가?    글을 기록한 날 : 2011/04/28 23:06

TeleportService에 대해서 앞으로 강의할 예정이기 때문에
해당 클래스를 기준으로 부가적인 설명을 하겠습니다.
아래에 보면 우선 package가 있고,
그 다음에 import가 있습니다.

이 강의는 초보자분들을 위한 강의이므로 좀 쉽게 설명하겠습니다.
자, 요즘 제가 많이 하는 스타크래프트2를 예로 들어보겠습니다.
스타2에서 크게 보면 종족이 있고 해당 종족속에는 건물과 유닛이 있습니다.
그 종족을 구분하는 과정이 필요하겠죠.
건물도 공격이 가능한 건물(캐논같은)이 있고, 생산을 위한 건물이 있고,
업그레이드를 위한 건물이 있죠.
그걸 그냥 통합된 위치에서 작업한다면 서로 뭐가 뭔지 처음 만든사람만 알 수 있고
스스로도 수십~수백개의 객체가 생성된다면 엄청나게 헷갈리고 어려울겁니다.

그걸 윈도우 탐색기에서 폴더를 나누듯이 서로 분리를 하는겁니다.

gameserver라는 루트를 만들고
그 밑에 services라는 패키지를 만들고
그 밑에 TeleportService라는 클래스나 ItemService, StigmaService 같은 클래스들을
만드는거죠. 이 패키지가 서버에 어떤 작용을 하느냐에 따라 분류를 하는겁니다.

그럼 그 다음에 있는 import는 뭐냐!
같은 package에 있는 다른 클래스들의 메소드는 따로 import 하지 않아도
ToyPetService.getInstance().dismissPet(player, player.getToyPet().getPetId());
위와같이 바로 사용이 가능합니다.

하지만 같은 패키지가 아닌 다른 패키지에 속해 있는 클래스의 메소드를 사용하려면
여러개의 다른 패키지에 동일한 이름의 클래스가 존재할 수 있기때문에
위치를 지정해주는겁니다.
아래 보면
import gameserver.dataholders.DataManager;
이런식으로 DataManager의 메소드를 사용하기 위해서
해당 클래스를 사용하겠다라는 위치를 지정해주는것입니다.
쉽죠?

근데 왜! 대부분의 자바 책에서 import를 자세하게 설명해주지 않느냐!
이유는 이클립스에서 Ctrl+Shift+O(영문)를 누르게 되면
자동으로 import 최적화를 해주기 때문입니다.
중복된 이름의 클래스가 있다면 어떤걸 사용할것이냐고
친절하게 아래와 같이 물어봐주기도 합니다.
사용자 삽입 이미지
아주 쉽죠.
다음 강의때는 TeleportService중에서 가장 많이 사용되는
gameserver.services.TeleportService.teleportTo(Player, int, float, float, float, int)
메소드에 대해서 강의하겠습니다.
필요하신 강의 있으시면 댓글로 올려주시면 강의해드리도록 하겠습니다.

블로그 홍보도 많이 부탁드릴께요~ ^^

package gameserver.services;

import gameserver.dataholders.DataManager;
import gameserver.dataholders.PlayerInitialData.LocationData;
import gameserver.model.EmotionType;
import gameserver.model.Race;
import gameserver.model.gameobjects.Kisk;
import gameserver.model.gameobjects.Npc;
import gameserver.model.gameobjects.player.Player;
import gameserver.model.gameobjects.player.Storage;
import gameserver.model.gameobjects.state.CreatureState;
import gameserver.model.templates.BindPointTemplate;
import gameserver.model.templates.portal.ExitPoint;
import gameserver.model.templates.portal.PortalTemplate;
import gameserver.model.templates.spawn.SpawnTemplate;
import gameserver.model.templates.teleport.TelelocationTemplate;
import gameserver.model.templates.teleport.TeleportLocation;
import gameserver.model.templates.teleport.TeleporterTemplate;
import gameserver.network.aion.serverpackets.SM_CHANNEL_INFO;
import gameserver.network.aion.serverpackets.SM_EMOTION;
import gameserver.network.aion.serverpackets.SM_ITEM_USAGE_ANIMATION;
import gameserver.network.aion.serverpackets.SM_PLAYER_INFO;
import gameserver.network.aion.serverpackets.SM_PLAYER_SPAWN;
import gameserver.network.aion.serverpackets.SM_SET_BIND_POINT;
import gameserver.network.aion.serverpackets.SM_STATS_INFO;
import gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import gameserver.network.aion.serverpackets.SM_TELEPORT_LOC;
import gameserver.network.aion.serverpackets.SM_TELEPORT_MAP;
import gameserver.network.aion.serverpacketseq.SEQ_SM_WINDSTREAM_ANNOUNCE;
import gameserver.services.ZoneService.ZoneUpdateMode;
import gameserver.utils.PacketSendUtility;
import gameserver.utils.ThreadPoolManager;
import gameserver.world.World;
import gameserver.world.WorldMapType;

import org.apache.log4j.Logger;
Creative Commons License
Creative Commons License

트랙백 주소 : http://www.barahime.org/trackback/8

  1. Subject :

    Tracked from GS test dem / 2013/04/02 23:12  삭제

    아이온으로 풀어보는 자바이야기 :: import란 무엇인가?

  2. Subject : this domain

    Tracked from this domain / 2014/08/30 14:04  삭제

    아이온으로 풀어보는 자바이야기 :: import란 무엇인가?

Notice

Blogroll

Counter

· Total
: 274246
· Today
: 20
· Yesterday
: 36