Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VB

Программирование VB

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Чё та я не рубаюся
 
 автор: час   (26.02.2010 в 21:36)   личное сообщение
 
 

поставил себе VB 2008 экспресс - кнечно ощущения - лепота так всё продумано и приятно в работе - кайф.
Прочитал книжку - скачками там 500 страниц - но вощем то всё и так всем нам известно - тем кто миф(vba) юзает.
Но вот что не пойму - книга о VB.NET2008
а я потавил немного другое - но всё актуально и для экспресса, причём не NET
тада - где из них, кто?

  Ответить  
 
 автор: час   (01.03.2010 в 11:24)   личное сообщение
 
 

Разисните - кто в курсе этих терминав.....

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 11:32)   личное сообщение
 
 

VB2008 и VB.NET2008 - это одно и то же. Просто с 2005 версии язык называется VB2005 и VB2008. Эти языки расширены по сравнению с VB.NET. Начиная с 2005 студии- вижуал бэйсик по своим возможностям совпадает с C#. За исключением возможности перегрузки операторов. Но в VB2008 по-моему это отличие уже устранено. Хотя может и ошибаюсь(насчет перегрузки операторов).

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 11:41)   личное сообщение
 
 

Кстати, прежде, чем лезть в VB2008 настоятельно рекомендую изучить работу с классами. Это полностью объектно-ориентированный язык и без классов ты работать полноценно не сможешь. Там даже строки подключения и запросы рекомендуется размещать в отдельных классах в пространсте имен DAL, А затем в формах создавать экземпляры соответствующих классов.

  Ответить  
 
 автор: час   (01.03.2010 в 12:06)   личное сообщение
 
 

спасибо огромное!!!!
Десятки раз читал про классы - не сфомировалось понятие в мозге.
Понял только - ссылаемся на класс, создаём его экземпляр - new MyClass
и пользуемся (используем) его методами и устанавливаем его свойства через переменную экземпляра этого класса.
В чём прелесть ни врубаюся.
Если создать простую Public Function(Str_STR as string) as String , и пользоваться ею во всей программе, создав единожды. Нафига всё в класс засовывать ?
В общем модуле простом не класса лежат Sub и Function для общего доступа....
Где эта блин изюминка

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 13:32)   личное сообщение
 
 


Где эта блин изюминка



Два слова - НАСЛЕДОВАНИЕ и ПОЛИМОРФИЗМ
Именно в этом вся изюменка и состоит.

  Ответить  
 
 автор: час   (01.03.2010 в 15:24)   личное сообщение
 
 

Ну наследуют они всё от предков...
Ну способны развивать своё - иметь новые свойства методы и .....
Ну то есть типа создаём новый экземпляр - тошно такой как его предок, да ещё добавляем ему новые "качества".....
Ну и ....... и чё

=====================================
блин как жа понять чё в этом хорошего.......
Все хвалят - а я просто не знаю , видимо, красочных примеров по результатам этих метаморфоз - потому и не вижу смысла......
======================================

А если не в лом - - опиши какой нить простой пример применения - где наглядно видны плюсы такого использования....
========================================

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 17:19)   личное сообщение
 
 

Хорошо.
Допустим у тебя есть 25 форм на которых на событии OnLoad нужно выставить длину текстбоксов = 500.
В случае НЕ ИСПОЛЬЗОВАНИЯ классов тебе придется 25 раз на каждой форме прописывать процедуру OnLoad

В случае ИСПОЛЬЗОВАНИЯ КЛАССОВ тебе придется сделать следующее:
(Извини, код на С#, поскольку VB я не очень хорошо изучил, но думаю суть уловишь)



Создаем класс в котором определяем процедуру SetInputControls, задающую длинну для текстбоксов, а также переопределяем метод OnLoad

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using TDL.BST;
namespace TDL.BST.UI
{
public class Class1: System.Web.UI.Page
{

public Class1(){}

protected override void OnLoad(EventArgs e)
{
SetInputControls(this);
base.OnLoad(e);
}


public static void SetInputControls(Control container)
{
foreach (Control ctl in container.Controls)
{
if ( ctl is TextBox )
{
WebControl wctl = ctl as WebControl;
wctl.Width=500;
}
else
{
if (ctl.Controls.Count > 0)
SetInputControls(ctl);
}
}
}
}
}



После все формы наследуем от нашего класса


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using TDL.BST;
using TDL.BST.DAL;
namespace TDL.BST.UI
{

public partial class Default2 : TDL.BST.UI.Class1
{

}
}




Заметь, что в данном случае процедуру OnLoad нашей формы мы не описываем вааще, но тем не менее, поскольку форма наследует наш созданный класс, то и соответственно наследует все методы этого класса.

Это касается наследования.

По поводу полиморфизма - щас выдерну фрагмент из своего проекта и опишу.

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 17:33)   личное сообщение
 
 


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace TDL.BST.DAL
{
public class BaseForumProvider
{
public BaseForumProvider() { }

public BaseForumProvider(string addedby,
string addedbyip,
string body,
string forumsname,
string title)

{
AddedBy = addedby;
AddedByIP = addedbyip;
Body = body;
Forumsname = forumsname;
Title = title;

}

public BaseForumProvider(int closed,
int postid,
string title)

{
PostID = postid;
Closed = closed;
Title = title;

}

public BaseForumProvider(int closed,
int postid)

{
PostID = postid;
Closed = closed;


}

public BaseForumProvider(string body,
int postid)

{
PostID = postid;
Body = body;


}

public BaseForumProvider(int postid)
{
PostID = postid;

}

public BaseForumProvider(string addedby,
string addedbyip,
string body,
int postid)

{
AddedBy = addedby;
AddedByIP = addedbyip;
Body = body;
PostID = postid;
}



private string _AddedBy;
public string AddedBy
{
get { return _AddedBy; }
set { _AddedBy = value; }
}

private string _AddedByIP;
public string AddedByIP
{
get { return _AddedByIP; }
set { _AddedByIP = value; }
}

private string _Body;
public string Body
{
get { return _Body; }
set { _Body = value; }
}
private string _Forumsname;
public string Forumsname
{
get { return _Forumsname; }
set { _Forumsname = value; }
}

private string _Title;
public string Title
{
get { return _Title; }
set { _Title = value; }
}

private int _Closed;
public int Closed
{
get { return _Closed; }
set { _Closed = value; }
}

private int _PostID;
public int PostID
{
get { return _PostID; }
set { _PostID = value; }
}
private int _ForumID;
public int ForumID
{
get { return _ForumID; }
set { _ForumID = value; }
}
}
}



Из всей этой галиматьи тебе нужно увидеть, что все процедуры у мну называются одинаково. Отличаются только количеством и типом входящих параметров.
При дальнейшем вызове экземпляров класса, в зависимости от входящих параметров, система сама разберется какую именно процедуру использовать.

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 17:36)   личное сообщение
 
 

Что касается наследования, то у мну описана процедура, выставляющая одинаковую длинну для всех текстбоксов. Этот пример далек от практического использования, но никто не мешеает тебе задать , например, для меню, которые есть на каждой форме источник данных при загрузке формы, и тогда тебе не придется заниматься нудной работой по описанию меню на каждой форме.

  Ответить  
 
 автор: Lukas   (01.03.2010 в 18:03)   личное сообщение
 
 


Допустим у тебя есть 25 форм на которых на событии OnLoad нужно выставить длину текстбоксов = 500.
В случае НЕ ИСПОЛЬЗОВАНИЯ классов тебе придется 25 раз на каждой форме прописывать процедуру OnLoad


Тут могут последовать возражения от часа:
Слушай, но я ведь могу в OnLoad форм прописать одну строчку - вызов общей функции, с передачей ей самой себя в качестве аргумента, которая сделает то-же самое?
Или я могу сварганить менеджер форм, который это сделает за меня для любой/нужной формы, тогда и прописывать OnLoad в каждой форме не придется?

  Ответить  
 
 автор: час   (01.03.2010 в 18:08)   личное сообщение
 
 

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 19:01)   личное сообщение
 
 

Можно и так.
Я не утверждаю, что без классов работать не будет. Можно ж обойтись и без паблик функций, каждый раз переписывая код в соответствующую процедуру.
Проблема в том, что через классы работать удобнее и корректнее. Так же удобней править код и ошибки.
Да и проблемы масштабируемости приложения решаются значительно легче.
Тут ,как говорится, хозяин-барин.
Прочувствует работу с классами- поймет, что так удобней. Не хочет изучать - ради бога. Я не настаиваю.

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 19:05)   личное сообщение
 
 


Слушай, но я ведь могу в OnLoad форм прописать одну строчку - вызов общей функции, с передачей ей самой себя в качестве аргумента, которая сделает то-же самое?



И придется писать 25 вызовов функций. А в случае с классами этого делать не придется

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 19:12)   личное сообщение
 
 

Кстати, есть ситуации, которые без пользовательских классов вообще решить невозможно. Пример - засунуть в грид датапикер. Без использования классов эту проблему решить вообще невозможно.

  Ответить  
 
 автор: Lukas   (01.03.2010 в 19:22)   личное сообщение
 
 

Ни в коем случае никого не отговариваю от использования классов.

  Ответить  
 
 автор: Lukas   (01.03.2010 в 19:19)   личное сообщение
 
 

А в варианте с наследованием не надо 25 раз указывать от кого наследовать?

  Ответить  
 
 автор: FORMAT   (01.03.2010 в 19:23)   личное сообщение
 
 

Одно дело указать от кого наследовать, другое дело - прописать сами процедуры. К тому же в классе можно переопределить не только форм лоад, но и другие события.

  Ответить  
 
 автор: Lukas   (01.03.2010 в 19:43)   личное сообщение
 
 

но и другие
А тут уж и возразить нечего.

  Ответить  
 
 автор: час   (01.03.2010 в 19:56)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList