вторник, 17 апреля 2012 г.

Abstract class. What is it?

   Абстрактные классы. Что же это? И с чем это едят? Под сырным или укропным соусом? На эти и другие вопросы ответ будет дан ниже.
   Иногда возникает ситуация, когда мы имеем супер класс, большинство его методов используем в подклассах. Супер классы находясь в верхней части иерархии становятся настолько абстрактными, что их можно рассматривать как определенную базу для разработки других классов. В этом случае необходимо создавать абстрактные классы. 
abstract class   На рисунке слева изображена иерархическая цепочка классов, в которой определен абстрактный класс "Насекомое" и пара подклассов.
   Данный класс имеет два подкласса "Жук" и "Муха". Действительно "Жук" и "Муха" являются насекомыми, а обратное утверждение не может быть верным, ибо не каждое насекомое может быть мухой или же жуком.
   С абстрактными классами действительны следующие утверждения:
  • Нельзя использовать конструктор для абстрактного класса.
  • Если в подклассе не определить все методы абстрактного класса, то подкласс так же становится абстрактным.
  • Возможно создание массива абстрактных классов, где элементы массива инициализированы подклассами. При этом у элементов массива возможно вызывать методы только абстрактного класса.
   Обо всем этом далее более подробно.
   Для начала об определении абстрактного класса. Абстрактный класс обозначается в коде следующим образом
abstract class Insect {

}
   Абстрактный класс по определению должен содержать абстрактные методы, которые представляют собой прототипы методов, реализованных в подклассах.
   Для класса Insect определим метод getDesctiption(). C его помощью мы получим описание данного объекта.К примеру: Жук богомол любит траву, но и не против полакомиться своими соседями
public abstract class Insect {
 private String name;
 
 public Insect(String n){
  this.name = n;
 }
 
 public String getName(){
  return this.name;
 }
 
 abstract public String getDecription();
}
   Чтобы было возможно работать с этим методом, его необходимо определить в подклассе Fly
public class Fly extends Insect {
 public Fly(String n){
  super(n);
 }

 public String getName() {
  return super.getName();
 }

 /**
  * Переопределенный метод
  */
 @Override
 public String getDecription() {
  return  "Жук " + getName() + " любит питаться пальчиками людей";
 }
}
   Класс Fly уже нельзя назвать абстрактным, так как он определил все методы (точнее один единственный) своего супер класса Insect. Обычно переопределенные методы обозначаются с помощью конструкции @override. Она явно дает знать, что данный метод не собственный у класса, а метод переопределенный.
   Для класса Insect нельзя вызывать конструктор, т.к. это приведет к ошибке:
new Insect("полоскун");
Данный код приведет к ошибке. Но без проблем можно создать объект подкласса
Fly fly = new Fly("Навозная");
Несмотря на то, что у абстрактных классов нельзя вызывать конструктор, но переменные абстрактных классов все же можно использовать. Ниже показана эта возможность:
Insect[] insect = new Insect[2];
  insect[0] = new Fly("Цеце");
  insect[1] = new Bug("Усач");
  
  for(Insect i : insect){
   System.out.println(i.getDecription());
  }
Здесь мы создаем массив класса Insect, элементы которого инициализируем экземплярами подклассов Fly и Bug и далее вызываем метод getDecription(). Ниже весь код программы:
public class TestBug {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Fly fly = new Fly("Навозная");
  
  Insect[] insect = new Insect[2];
  insect[0] = new Fly("Цеце");
  insect[1] = new Bug("Усач");
  
  for(Insect i : insect){
   System.out.println(i.getDecription());
  }
 }

}

//Абстрактный класс
public abstract class Insect {
 private String name;
 
 public Insect(String n){
  this.name = n;
 }
 
 public String getName(){
  return this.name;
 }
 
 abstract public String getDecription();
}

public class Bug extends Insect {
 public Bug(String n){
  super(n);
 }
 public String getName(){
  return super.getName();
 }
 @Override
 public String getDecription() {
  return getName() + " спаситель черепах";
 }
}

public class Fly extends Insect {
 public Fly(String n){
  super(n);
 }

 public String getName() {
  return super.getName();
 }

 /**
  * Переопределенный метод
  */
 @Override
 public String getDecription() {
  return  "Жук " + getName() + " любит питаться пальчиками людей";
 }
}
На этом все! Спасибо:)

среда, 11 января 2012 г.

Oracle ..acle ... acle

   Он жил хорошо. Жил - не тужил. И как то решил, что следует что-то изменить в своей жизни. Что же? А? Может прическу? Может бороду отрастить и обрасти свитером - стать эдаким программистом в законе?
   Но все это как то не то. Что-то другое его манило к себе и звало. Будило его по ночам. Он слышал лишь обрывки слов, какую-то несуразицу - "Окал", "Оро", "Ракле". Что за абсурд? - думал он. - Или я сошел с ума? .
   Тревожные мысли его томили и угнетали. Не человек, а какая-то бесформенная серая масса изрыгающая зловонные запахи. - говорила о нем его соседка тетя Нюра, когда ее спрашивали о Володе.
   Он не спал, не ел, хотя грыз ногти - это его профессиональная привычка, появившаяся еще в раннем детстве. Он не мог сдержать себя, когда видел ногти. Свои или чужие для него не имело значения. Ногти - думал он и шел на них как заговоренный щелкая своими мощными, закаленными челюстями.
    По ночам он кричал какие-то несуразные слова, бранился матом. По утрам ходил в церковь, где молился до посинения. Мямлил про себя в автобусе как делают это бабульки, был сер и нелюдим.
   Все изменилось в один день. Его муза куда-то ушла. Она растворилась в небытии и заодно опустошила своего обожателя. После этого он не мог уже говорить. Слова казались ему чужими, какими-то пресными, язык каким-то вязко-плесневелым желе. Ногти уже не доставляли ему  прежнее удовольствие, а тетя Нюра стала еще больше считать его унылым говном и свое мнение всячески старалась подчеркнуть, когда Володя приходил к ней починить телевизор.
   Да-да, этот человек был мастером на все руки, неким универсальным человеком, самородком и левшой в современном обществе.
   А что же там дальше было...???Он встретил прекрасную принцессу?Порубал змея горыныча? Покорил весь мир своими мыслями, песнями, шутками-прибаутками. Нет, ничего этого не было.
Как-то раз он проснулся и пошел на работу. Работу сложную, работу рабскую. И  говорит ему товарищ -командир и руководитель группы программных разработок - "Вова, сегодня для тебя настал великий день. Сегодня ты станешь богатырем сильным при сильным. С КПД мозга 100% процентов. Про тебя снимут фильм, напишут книги, и все девушки мира будут глубоко и тяжко вздыхать только при упоминании твоего имени, Володя. В общем ты станешь Оракловцем. Творцом, бойцом и защитником Оракла. На тебе книгу, сиди и разбирайся.
   И началась новая жизнь для Володи. Прям как у Билла Гейтса. По крайней мере он так думал. Может думает и по сей день. И живет припеваючи и играючи. И детей ростит. И сказки про Оракал рассказывает. В общем сказочке конец. А кто ее многоБукав осилил молодец:)
   
   

воскресенье, 11 сентября 2011 г.

Хостерман и JAVA

   Вот и настал тот момент, когда у меня появилось немного времени, чтобы поучить язык JAVA. В изучении этого "прекрасного" я остановился на таком авторе как Хостерман Кей.
   Скажу сразу: книга для новичка не годится. Она откровенный отстой для русскоговорящего человека. Потому что, она написана на каком-то непонятном извращенном языке девочки с гуманитарным складом ума. Оно и понятно: люди гонятся за денежками и в этой погоне предлагают услуги, но не всегда работодатель ответственно относится к выбору работника, не всегда проверяет его знания, портфолио и прочее. В общем в этот раз работодатель прогадал погнавшись за быстрым результатом. 

воскресенье, 28 августа 2011 г.

Вожделение вождения (День второй)

   Второй день я учился у другого инструктора. Так как мой инструктор работает в паре с одним товарищем, у которого сломалась его машина, и в знак глубокой доброты мой инструктор поделился с ним своим авто.
   В.И. оказался менее добродушным человеком. Наоборот мне показался неким быдлокуном, но каким-то волевым человеком, который как оказалось был в прошлом гонщиком (если конечно он мне не наврал). Он не дал мне возможность самостоятельно доехать до площадки, а сам повел машину. Доехав до площадки я пересел на место водителя и стал учиться выполнять упражнения.
   За этот день мне предстояло научиться выполнять змейку, параллельную парковку и эстакаду.
   "Проще паренной репы" - подумал я перед выполнением змейки. Я всегда в себе уверен и не боюсь выполнять даже то, что никогда не делал. Но эта моя уверенность на этот раз меня подвела. Оказалось, что змейку я не могу выполнить с первого раза. Все оказалось гораздо сложнее. Машина меня не слушалась, и я задел флажок Дальше я учился уже вне площадки выполнять змейку выворачивая до упора руль то в право, то влево на протяжении 100 метров. Признаюсь честно: руки чертовски устали. Я и не думал, что это так тяжело будет. Но, проехав это расстояние я вернулся к змейке и выполнил это упражнение на ура.
   Дальше параллельная парковка. Она далась мне уже легче после инструкции товарища сбоку, я ее выполнил. И на эстакаду заехал чуть ли не с первого раза. Занятие подходило к концу. А за него я научился заезжать на эстакаду, выполнять змейку и параллельную стоянку. И на полном позитиве я отправился на работу. Завтра меня ждало следующее занятие....
   Которого не было, потому что товарищ не брал трубку. Как оказалось позже он заболел, а может не заболел, а просто напился от радости или горести. В общем: на следующий день я никуда не поехал, и был слегка опечален, ибо мой план слегка рушился.

вторник, 9 августа 2011 г.

Вожделение вождения (День первый )

   Ну, наконец-то я решился. Я стану автолюбителем. Выбрал себе инструктора. назначил дату, место и время. Вот вроде бы и все. Дальше дело техники, дело моих способностей молодецких, способностей все схватывать на лету, на бегу  и прочих уууу.  
   День первый:
   Забавненько: я себе по другому представлял товарища инструктора: такой молодой парень лет 30. А пришел и там  -"Здравствуйте, его величество Бородач":) Миловидный мужичок 50 лет. С приятным голосом, располагающий к доверию. Сажусь к нему в машину, болтаем о моем опыте, он говорит о своей чудо-методике. Что в авто-школах все по другому, а у него как у профи я буду ездить уже очень быстро, ведь я же еще ездил на машине так сказать "по полям". Да именно ездил "по полям" - это я так обозначил свою езду на отцовском уазике лет так 10 назад. Да, хорошая машина была. Но только ее продали. И с того момента мы редко выезжали на природу. Уазик  обьединяет людей.
//ActionScript3 //C# //CSS //Java //JavaScript //Python //Sql //Xml