Dart Programlama - Sınıflar
Dart, nesne yönelimli bir dildir. Sınıflar, arayüzler vb. Gibi nesne yönelimli programlama özelliklerini destekler.classOOP açısından, nesneler oluşturmak için bir plandır. Birclassnesneye ilişkin verileri kapsüller. Dart, adı verilen bu kavram için yerleşik destek sağlarclass.
Bir Sınıf Bildirmek
Kullan class bildirmek için anahtar kelime classDart'ta. Bir sınıf tanımı, anahtar kelime sınıfı ile başlar ve onu takip edenclass name; ve bir çift kaşlı ayraç içine alınmış sınıf gövdesi. Aynı sözdizimi aşağıda verilmiştir -
Sözdizimi
class class_name {
<fields>
<getters/setters>
<constructors>
<functions>
}
classanahtar sözcüğün ardından sınıf adı gelir. Bir sınıfı adlandırırken tanımlayıcılara ilişkin kurallar dikkate alınmalıdır.
Bir sınıf tanımı aşağıdakileri içerebilir -
Fields- Alan, bir sınıfta belirtilen herhangi bir değişkendir. Alanlar, nesnelerle ilgili verileri temsil eder.
Setters and Getters- Programın bir sınıfın alanlarının değerlerini başlatmasına ve almasına izin verir. Varsayılan bir alıcı / ayarlayıcı, her sınıfla ilişkilendirilir. Bununla birlikte, bir ayarlayıcı / alıcı açıkça tanımlanarak varsayılan olanlar geçersiz kılınabilir.
Constructors - sınıfın nesneleri için bellek ayırmaktan sorumludur.
Functions- İşlevler, bir nesnenin gerçekleştirebileceği eylemleri temsil eder. Bazen yöntemler olarak da anılırlar.
Bir araya getirilen bu bileşenler, data members sınıfın.
Örnek: Bir sınıf bildirmek
class Car {
// field
String engine = "E1001";
// function
void disp() {
print(engine);
}
}
Örnek bir sınıf bildiriyor Car. Sınıfın adlı bir alanı varengine. disp() alanın değerini yazdıran basit bir işlevdir engine.
Sınıfın Örneğini Oluşturma
Sınıfın bir örneğini oluşturmak için, newanahtar kelime ve ardından sınıf adı. Aynı sözdizimi aşağıda verilmiştir -
Sözdizimi
var object_name = new class_name([ arguments ])
new anahtar kelime somutlaştırmadan sorumludur.
İfadenin sağ tarafı kurucuyu çağırır. Yapıcı, parametreleştirilmişse değerler geçirilmelidir.
Örnek: Bir sınıfın somutlaştırılması
var obj = new Car("Engine 1")
Niteliklere ve İşlevlere Erişim
Bir sınıfın özniteliklerine ve işlevlerine nesne aracılığıyla erişilebilir. Kullan '.' nokta notasyonu (olarak adlandırılırperiod) bir sınıfın veri üyelerine erişmek için.
//accessing an attribute
obj.field_name
//accessing a function
obj.function_name()
Misal
Dart'ta özniteliklere ve işlevlere nasıl erişileceğini anlamak için aşağıdaki örneğe bir göz atın -
void main() {
Car c= new Car();
c.disp();
}
class Car {
// field
String engine = "E1001";
// function
void disp() {
print(engine);
}
}
output yukarıdaki kod aşağıdaki gibidir -
E1001
Dart Oluşturucuları
Yapıcı, sınıfın değişkenlerini başlatmaktan sorumlu olan sınıfın özel bir işlevidir. Dart, sınıfınki ile aynı ada sahip bir kurucu tanımlar. Yapıcı bir işlevdir ve dolayısıyla parametreleştirilebilir. Ancak, bir işlevden farklı olarak, yapıcıların bir dönüş türü olamaz. Bir yapıcı bildirmezseniz, varsayılanno-argument constructor sizin için sağlanmıştır.
Sözdizimi
Class_name(parameter_list) {
//constructor body
}
Misal
Aşağıdaki örnek, Dart'ta yapıcıların nasıl kullanılacağını gösterir -
void main() {
Car c = new Car('E1001');
}
class Car {
Car(String engine) {
print(engine);
}
}
Aşağıdakileri üretmelidir output -
E1001
İsimli Oluşturucular
Dart sağlar named constructors bir sınıfı etkinleştirmek için multiple constructors. Adlandırılmış kurucuların sözdizimi aşağıda verildiği gibidir -
Sözdizimi: Yapıcıyı tanımlama
Class_name.constructor_name(param_list)
Misal
Aşağıdaki örnek, adlandırılmış yapıcıları Dart'ta nasıl kullanabileceğinizi gösterir -
void main() {
Car c1 = new Car.namedConst('E1001');
Car c2 = new Car();
}
class Car {
Car() {
print("Non-parameterized constructor invoked");
}
Car.namedConst(String engine) {
print("The engine is : ${engine}");
}
}
Aşağıdakileri üretmelidir output -
The engine is : E1001
Non-parameterized constructor invoked
Bu Anahtar Kelime
thisanahtar kelime, sınıfın mevcut örneğini ifade eder. Burada, sınıfın alanının parametre adı ve adı aynıdır. Dolayısıyla, belirsizliği önlemek için, sınıfın alanına ön ek olarakthisanahtar kelime. Aşağıdaki örnek aynı şeyi açıklıyor -
Misal
Aşağıdaki örnek, nasıl kullanılacağını açıklamaktadır. this Dart'ta anahtar kelime -
void main() {
Car c1 = new Car('E1001');
}
class Car {
String engine;
Car(String engine) {
this.engine = engine;
print("The engine is : ${engine}");
}
}
Aşağıdakileri üretmelidir output -
The engine is : E1001
Dart Sınıfı ─ Getters ve Setters
Getters ve Settersolarak da adlandırılır accessors ve mutators, programın sırasıyla sınıf alanlarının değerlerini başlatmasına ve almasına izin verin. Toplayıcılar veya erişimciler,getanahtar kelime. Ayarlayıcılar veya mutatörler,set anahtar kelime.
Varsayılan bir alıcı / ayarlayıcı, her sınıfla ilişkilendirilir. Bununla birlikte, bir ayarlayıcı / alıcı açıkça tanımlanarak varsayılan olanlar geçersiz kılınabilir. Alıcının parametresi yoktur ve bir değer döndürür ve ayarlayıcının bir parametresi vardır ve bir değer döndürmez.
Sözdizimi: Alıcı tanımlama
Return_type get identifier
{
}
Sözdizimi: Bir ayarlayıcı tanımlama
set identifier
{
}
Misal
Aşağıdaki örnek, nasıl kullanabileceğinizi gösterir. getters ve setters Dart sınıfında -
class Student {
String name;
int age;
String get stud_name {
return name;
}
void set stud_name(String name) {
this.name = name;
}
void set stud_age(int age) {
if(age<= 0) {
print("Age should be greater than 5");
} else {
this.age = age;
}
}
int get stud_age {
return age;
}
}
void main() {
Student s1 = new Student();
s1.stud_name = 'MARK';
s1.stud_age = 0;
print(s1.stud_name);
print(s1.stud_age);
}
Bu program kodu aşağıdakileri üretmelidir output -
Age should be greater than 5
MARK
Null
Sınıf Mirası
Dart, bir programın mevcut bir sınıftan yeni sınıflar oluşturma yeteneği olan Miras kavramını destekler. Daha yeni sınıflar oluşturmak için genişletilen sınıfa ana sınıf / süper sınıf denir. Yeni oluşturulan sınıflara alt / alt sınıflar denir.
Bir sınıf, 'extends' anahtar sözcüğünü kullanarak başka bir sınıftan miras alır. Child classes inherit all properties and methods except constructors from the parent class.
Sözdizimi
class child_class_name extends parent_class_name
Note - Dart çoklu mirası desteklemez.
Örnek: Sınıf Mirası
Aşağıdaki örnekte, bir sınıf bildiriyoruz Shape. Sınıf,Circlesınıf. Sınıflar arasında kalıtım ilişkisi olduğu için alt sınıf yani sınıfCar üst sınıf veri üyesine örtük bir erişim alır.
void main() {
var obj = new Circle();
obj.cal_area();
}
class Shape {
void cal_area() {
print("calling calc area defined in the Shape class");
}
}
class Circle extends Shape {}
Aşağıdakileri üretmelidir output -
calling calc area defined in the Shape class
Kalıtım Türleri
Kalıtım, aşağıdaki üç türde olabilir -
Single - Her sınıf en fazla bir ebeveyn sınıfından genişletilebilir.
Multiple- Bir sınıf, birden çok sınıftan miras alabilir. Dart, çoklu mirası desteklemez.
Multi-level - Bir sınıf başka bir alt sınıftan miras alabilir.
Misal
Aşağıdaki örnek, çok düzeyli kalıtımın nasıl çalıştığını gösterir -
void main() {
var obj = new Leaf();
obj.str = "hello";
print(obj.str);
}
class Root {
String str;
}
class Child extends Root {}
class Leaf extends Child {}
//indirectly inherits from Root by virtue of inheritance
Sınıf LeafÖznitelikleri çok düzeyli miras yoluyla Kök ve Çocuk sınıflarından türetir. Onunoutput aşağıdaki gibidir -
hello
Dart - Sınıf Mirası ve Yöntemi Geçersiz Kılma
Yöntemi Geçersiz Kılma, alt sınıfın kendi üst sınıfındaki bir yöntemi yeniden tanımladığı bir mekanizmadır. Aşağıdaki örnek aynı şeyi göstermektedir -
Misal
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(int b) {
print("value of b ${b}");
}
}
Aşağıdakileri üretmelidir output -
value of b 12
Yöntemi geçersiz kılarken işlev parametrelerinin sayısı ve türü eşleşmelidir. Parametrelerin sayısında veya veri türlerinde bir uyumsuzluk olması durumunda, Dart derleyicisi bir hata atar. Aşağıdaki çizim aynı şeyi açıklamaktadır -
import 'dart:io';
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(String b) {
print("value of b ${b}");
}
}
Aşağıdakileri üretmelidir output -
value of b 12
Statik Anahtar Kelime
static anahtar kelime bir sınıfın veri üyelerine uygulanabilir, yani, fields ve methods. Statik bir değişken, program yürütmeyi bitirene kadar değerlerini korur. Statik üyelere sınıf adıyla başvurulur.
Misal
class StaticMem {
static int num;
static disp() {
print("The value of num is ${StaticMem.num}") ;
}
}
void main() {
StaticMem.num = 12;
// initialize the static variable }
StaticMem.disp();
// invoke the static method
}
Aşağıdakileri üretmelidir output -
The value of num is 12
Süper Anahtar Kelime
superanahtar kelime, bir sınıfın yakın ebeveynine atıfta bulunmak için kullanılır. Anahtar kelime, bir süper sınıf versiyonuna atıfta bulunmak için kullanılabilir.variable, property, veya method. Aşağıdaki örnek aynı şeyi göstermektedir -
Misal
void main() {
Child c = new Child();
c.m1(12);
}
class Parent {
String msg = "message variable from the parent class";
void m1(int a){ print("value of a ${a}");}
}
class Child extends Parent {
@override
void m1(int b) {
print("value of b ${b}");
super.m1(13);
print("${super.msg}") ;
}
}
Aşağıdakileri üretmelidir output -
value of b 12
value of a 13
message variable from the parent class