Шта је апстрактна класа у Ц #?

Реч апстракт значи мисао или идеју која нема свој физички облик, али делује као основа за друге ствари. Исти је концепт који стоји иза апстрактне класе. У овом ћемо чланку разговарати о апстрактним класама у Ц #. Апстрактна класа је посебна класа у Ц # која се не може инстанцирати, тј. Не можете стварати објекте апстрактне класе. Сврха апстрактне класе је да обезбеди скелетну структуру из које би остале класе проистекле. Апстрактни часови немају сопствену примјену. Они захтевају од програмера и програмера да потичу из апстрактне класе и надограде на скелетну структуру, тј. Напишу њихову примену. Апстрактна класа може унутар себе имати и декларације апстрактних метода. Опет, ове методе не могу имати никакву дефиницију.

Синтакса декларирања апстрактних класа и метода укључује постављање кључне речи сажетак пре декларације. Тако једноставна.

Синтакса:

abstract class ClassName
(
public abstract void MethodName();
)

Запамтите, апстрактне методе не могу имати дефиниције. Тако се декларације апстрактне методе завршавају тачком са зарезом. Они се могу само изјаснити. Дефиниције морају бити дате у изведеним неастрактним класама.

Како апстрактна класа делује у Ц #?

Апстрактна кључна реч упућује преводиоцу да је класа скелетне структуре основне класе која ће се применити у изведеним класама. Ако преводилац нађе било коју класу која изводи апстрактну основну класу, он проверава да ли су све апстрактне методе и својства надјачана и имплементирана у изведену класу.

Сажетак Класа вс сучеље

Сада се можда питате шта је све то и шта интерфејс чини. Дакле, како се апстрактна класа разликује од интерфејса?

Разумејмо то на примеру. Рецимо да водимо издавачку компанију и ангажовали смо неколико уредника који ће писати рубрике за наш часопис. Претпоставимо да су стручњаци различитих жанрова, пишу чланке који ће се објављивати одређеног дана у недељи и сви се запошљавају уз исту плату.

Дефинишите апстрактну класу запосленика за наше уреднике.

Шифра:

abstract class EmployeeEditors
(
public abstract void Genre();
public abstract string PublishDay();
public int Payment()
(
Console.Write(“Monthly salary is (0)$.”, 1000);
)
)

Лако бисмо могли имплементирати начин плаћања знајући да ће исти бити за све. Остале две методе су проглашене апстрактним да би их имплементирала изведена класа. Могло би се прогласити нормална класа за сваког уредника која произлази из апстрактне класе, а затим може применити апстрактне методе за дефинисање жанрова и дана. Претпоставимо да је и зарада сваког уредника такође различита. Један од начина да променимо наш код је да се начин плаћања прогласи апстрактним. Други начин би био прогласити читав ЕмплоиееЕдитор интерфејсом и дати потпуну слободу наслеђивању класа.

Public interface EmployeeEditors
(
public abstract void Genre();
public abstract string PublishDay();
public abstract int Payment();
)

Дакле, апстрактна класа је основна класа на којој се граде друге класе. Имајући у виду, интерфејс је нацрт за остале класе на који се могу позивати и креирати испочетка.

Правила апстрактне наставе у Ц #

Постоје одређена правила која треба да се придржавају током рада са апстрактним часовима.

  • Будући да апстрактне класе имају непотпуне дефиниције метода, стога их није могуће употријебити. Сваки покушај креирања објекта апстрактне класе резултирао би грешком у времену превођења.
  • Апстрактне методе се не могу дефинисати у апстрактним часовима, већ се само декларишу. Тело методе мора бити дефинисано у изведеним класама.
  • Изведене часове морају имплементирати све апстрактне методе.
  • Апстрактне методе не могу бити статичне или виртуалне.

Пример апстрактне наставе у Ц #

Изјава проблема: Узмимо још један пример из стварног света. Претпоставимо да се од вас тражи да аутоматизујете процес писања понуде за одређену организацију. Тренутни поступак је потпуно ручан и захтева уређивање постојећих писама са понудама, што је подложно грешкама. Постоје одређене ствари које би биле заједничке за сва писма о понуди, као што су локација посла, радни век, назив компаније, брендирање компаније итд. Остале ствари као што су име запосленика, положај, плата, датум придруживања итд. Су специфичне за сваку понуду писмо.

Решење : Дизајнирали бисте апстрактну класу за горњу сврху. Да видимо како.

Шифра:

ode: using System;
abstract class OfferLetter
(
public abstract string Name(string name);
public abstract string Designation(string designation);
public abstract int Payment(int pay);
public abstract string DOJ(string doj);
public string CompanyName()
(
return "XYZ Corporation Pvt. Ltd.";
)
public string OfficeAddress()
(
return "512, Manhattan, NY";
)
public string CompanyBranding()
(
return this.CompanyName() + " is a privately owned regsitered corporation operating \n under the license provided by the state of New York.";
)
public string Disclaimer()
(
return "This letter and its contents are confidential in nature and are intended only \n for the recipient."+
"\nIf you are not the correct recipient, kindly return it immediately \n to " + this.CompanyName() + " " + this.OfficeAddress() + ".";
)
)
class PrintOfferLetter : OfferLetter
(
public override string Name(string name)
(
return name;
)
public override string Designation(string designation)
(
return designation;
)
public override int Payment(int pay)
(
return pay;
)
public override string DOJ(string doj)
(
return doj;
)
)
public class Program
(
public static void Main()
(
PrintOfferLetter ltr = new PrintOfferLetter();
string empName = "Mr. ABC", designation = "Senior Consultant", doj = "20-02-2020";
int pay = 50000;
Console.WriteLine(ltr.CompanyName() + " is very happy to extend this offer letter to \n" + ltr.Name(empName)
+ " at the designation of " + ltr.Designation(designation) + " with an annual pay of " + ltr.Payment(pay) + "$.");
Console.WriteLine("\nYou are required to report at " + ltr.OfficeAddress() + " from " + ltr.DOJ(doj) + " (dd-mm-yyyy).");
Console.WriteLine("\n\n" + ltr.CompanyBranding());
Console.WriteLine("\n\n" + ltr.Disclaimer());
)
)

Излаз:

Закључак

Укратко, апстрактна класа је једноставно непотпуна или делимично комплетна класа коју друге класе могу извести и надоградити своју логику. У овом чланку смо видели како се декларира апстрактна класа и функционише. Видели смо примере употребе апстрактних класа у стварном животу и како се оне разликују од сучеља. Препоручује се испробати и користити апстрактне часове што је више могуће у вашем коду. Ово је пресудна пракса доброг програмирања.

Препоручени чланци

Ово је водич за Сажетак класе на Ц #. Овде смо расправљали о дефиницији и како апстрактна класа делује у Ц #, заједно с правилима и примером. Можете и да прођете кроз остале сродне чланке да бисте сазнали више -

  1. Шта су апстрактне класе у ЈаваСцрипт-у?
  2. Сажетак класе Ц ++? (Примери)
  3. Шта је апстрактна класа у ПХП-у?
  4. Преглед апстрактне класе у Питхон-у

Категорија: