Рубрики
C# Fragments "Unity-C#" test "C#" ООП "Интерфейс" ООП "Свойство"

C# «Получить конвертированное значение свойства экземпляра по имени в интерфейсе»

public interface ITest
{
/// <summary>
/// проверка экземпляра типа Dictionary на заполенность
/// </summary>
public bool Пустой  => System.Convert.ToInt32(this.GetType().GetProperty("Count").GetValue(this))== 0;
}
public class Test:Dictionary<uint,string> ITest{
}
ITest Ex= new Test();
Debug.log(Ex.Пустой);
Рубрики
C# Fragments "Unity-C#" test "C#" Метод ООП "Интерфейс"

C# «Метод интерфейса присваивает значения свойствам без реализации в классе»

using UnityEngine;
namespace test2208041738
{
    public interface ITest
    {
        public byte Prop1
        {
            get;
            set;
        }
        public string Prop2
        {
            get;
            set;
        }
public void Method_props_assign() => this.Method(2, "hello");

public (byte, string) Method(byte Prop1, string Prop2) => (this.Prop1 = Prop1, this.Prop2 = Prop2);
}
    public class Test : ITest
    {
        private byte _prop1;
        private string _prop2;
        
        public byte Prop1
        {
            get => _prop1;
            set => _prop1 = value;
        }
        public string Prop2
        {
            get => _prop2;
            set => _prop2 = value;
        }
        static public void test()
        {
            ITest t = new Test();
            t.Method_props_assign();
            Debug.Log(t.Prop1 + "," + t.Prop2);
        }
    }
}
Рубрики
ООП "Абстрактный Класс" ООП "Интерфейс"

ООП «Интерфейс или Абстрактный Класc»

Ссылка

Абстрактный класс

это класс, у которого не реализован один или больше методов некоторые языки требуют такие методы помечать специальными ключевыми словами

Интерфейс

это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.

Интерфейс нужен обычно когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.

Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода в некоторых языках (С++) специального ключевого слова для обозначения интерфейсов нет.

Можно считать, что любой интерфейс — это уже абстрактный класс, но не наоборот.

Рубрики
JavaScript основы ООП "Сlass"

Class

  • не наследуемый класс с именем Class1 без объявленных полей
Class1:Class {
}
  • не наследуемый класс с именем Class1 с объявленным полем внутри конструктора и обращением снаружи через get и set
Class1:Class {
 get Field(){
  return this.field;
 }
 set Field(val){
  this.field=val;
 }
 constructor(atr){
  this.field=atr;
 }
} 
  • наследование
    дочерний класс относительно другого класса
Animal:Class {
 constructor(name){
  this.name=name;
 }
 speak(){
  console.log(`${this.name} издаёт звук.`);
 }
}
Class Dog extends Animal {
  constructor(name){
  //вызывает конструктор super класса и передаёт параметр name 
  super(name); 
  }

  speak() {
    console.log(`${this.name} лает.`);
  }
}
let d = new Dog ('Митци');
d.speak(); // Митци лает
Рубрики
ООП "Паттерны"

ООП Patterns «Понятие»

Паттерн
шаблон проектирования

Часто встречающиеся решение определённой проблемы при проектировании архитектуры
(веб-приложения или любой другой программы)

Способ решения периодически возникающих проблем некоторых типовых задач

Паттерн — это не

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