Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×
  • Задачка на поиск связей между элементами строкового массива.

    Мне вот интересно, если из C# выкинуть соснули.рф, то пулучается какбы джава. Но я так смотрю, там вообще ничего не остается. Тупо голяк. Даже выучить нечего.

  • Задачка на поиск связей между элементами строкового массива.

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

  • Java Jun нынче не торт

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class CustomerAccount
        {
            private ISpecification<CustomerAccount> _hasReachedRentalThreshold;
            private ISpecification<CustomerAccount> _customerAccountIsActive;
            private ISpecification<CustomerAccount> _customerAccountHasLateFees;
    
            public CustomerAccount()
            {
                _hasReachedRentalThreshold = new HasReachedRentalThresholdSpecification();
                _customerAccountIsActive = new CustomerAccountStillActiveSpecification();
                _customerAccountHasLateFees = new CustomerAccountHasLateFeesSpecification(); 
            }
    
            public decimal NumberOfRentalsThisMonth { get; set; }
    
            public bool AccountActive { get; set; }
    
            public decimal LateFees { get; set; }
    
            public bool CanRent()
            {            
                ISpecification<CustomerAccount> canRent = _customerAccountIsActive.And(_hasReachedRentalThreshold.Not()).And(_customerAccountHasLateFees.Not());
    
                return canRent.IsSatisfiedBy(this);             
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class HasReachedRentalThresholdSpecification : CompositeSpecification<CustomerAccount> 
        {
            public override bool IsSatisfiedBy(CustomerAccount candidate)
            {       
                return candidate.NumberOfRentalsThisMonth >= 5;        
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class CustomerAccountStillActiveSpecification : CompositeSpecification<CustomerAccount>  
        {
            public override bool IsSatisfiedBy(CustomerAccount candidate)
            {
                return candidate.AccountActive;
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class CustomerAccountHasLateFeesSpecification : CompositeSpecification<CustomerAccount>  
        {
            public override bool IsSatisfiedBy(CustomerAccount candidate)
            {
                return candidate.LateFees > 0;
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public abstract class CompositeSpecification<T> : ISpecification<T>
        {
            public abstract bool IsSatisfiedBy(T candidate);
    
            public ISpecification<T> And(ISpecification<T> other)
            {
                return new AndSpecification<T>(this, other);
            }
          
            public ISpecification<T> Not()
            {
                return new NotSpecification<T>(this);
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public interface ISpecification<T>
        {
            bool IsSatisfiedBy(T candidate);
            
            ISpecification<T> And(ISpecification<T> other);        
            
            ISpecification<T> Not();
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class AndSpecification<T> : CompositeSpecification<T>
        {
            private ISpecification<T> _leftSpecification;
            private ISpecification<T> _rightSpecification;
    
            public AndSpecification(ISpecification<T> leftSpecification, ISpecification<T> rightSpecification)
            {
                _leftSpecification = leftSpecification;
                _rightSpecification = rightSpecification;
            }
    
            public override bool IsSatisfiedBy(T candidate)
            {
                return _leftSpecification.IsSatisfiedBy(candidate) && _rightSpecification.IsSatisfiedBy(candidate);
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ASPPatterns.Chap5.Specification.Model
    {
        public class NotSpecification<T> : CompositeSpecification<T>
        {
            private ISpecification<T> _innerSpecification;
    
            public NotSpecification(ISpecification<T> innerSpecification)
            {
                _innerSpecification = innerSpecification;
            }
    
            public override bool IsSatisfiedBy(T candidate)
            {
                return !_innerSpecification.IsSatisfiedBy(candidate);
            }
        }
    }
    
    
  • Java Jun нынче не торт

    Забей. Я вообще не про то. Смотри на пример из книжки.

  • Java Jun нынче не торт

    Не, ну я так прикинул, что дофига гемора нужно, чтобы протестировать какой-нибудь метод в котором внутри есть, что-то типа !(a == !b) && !(a != b), где а и b, что-то тоже большое. Можно сразу тестировать логическое выражение.

  • Java Jun нынче не торт

    Паттерны: Composite, Specification. Ну это типа логика делегируется отдельным классам, которые проверяют логическое утверждение на основе чего-то. Из этих классов собирается аггрегат, используя кастомные логические Not, Or, And. Таким образом гораздо легче логику тестировать. Я хоть и не тестировал никогда, но по такому принципу писал. Ну ты понял короче?

  • Java Jun нынче не торт

    надо тесты писать.
    вокруг композитных спецификаций аггрегатов многократно используемой логики.
    Підтримав: Олексій Пєніє
  • Донецк, вставай! Другого шанса может уже не быть

    Что творится в донецке и харькове?
    pbs.twimg.com/...Aa-cT.jpg:large
    pbs.twimg.com/...AhZXW.jpg:large

  • Под Славянском появились «зеленые человечки»

    Евреи же ... Это они во всем виноваты ... Их даже пули не берут

  • Java Jun нынче не торт

    Со всем согласен. Я только хотел сказать, что браузеры очень уж разные www.sitepen.com/...ce-an-analysis . Лично я на текущий момент разбирался только с сорцами лисы.

  • Java Jun нынче не торт

    Вполне допускаю, что ие сможет разорвать другие браузеры по каким-то операциям со строками. Тоже может случится и с лисой. Больно яваскрипты эти разные.

  • Java Jun нынче не торт

    что я сделал не так?
    сделай в ие и в лисе
  • Java Jun нынче не торт

    Ниочем. Я щас на сишке влеплю красавца. Не побьете.

  • Путин решил создать свой православный Интернет

    Ну теперь можно и Скинина трольнуть с чистой совестью? ))

  • Донецк, вставай! Другого шанса может уже не быть

    Пофиг. Нужен кто-то чтобы

    в случае чего защитить митинг от набегов орков
  • Донецк, вставай! Другого шанса может уже не быть

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

    Підтримав: Oleksiy Antonov
  • Java Jun нынче не торт

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

    Підтримали: palauth, Gabriel Angelos
  • Java Jun нынче не торт

    Но лучше таких отсеять и взять чела с блеском в глазах, любящего учиться и узнавать новое.
     и уеб.ать версткой и бакфиксингом по этому блеску в глазах и отбить все желание учиться.
  • Донецк, вставай! Другого шанса может уже не быть

    Я не гуглил, а что они уже отличились как-то?

  • AMA a Swedish software guy

    Ему здесь точно понравится. Они еще месяц после окончания евро здесь бухали и не хотели уезжать. Говорили, что это лучшая страна на свете (здесь пивасик копеечный). Так что Добро Пожаловать. И следует отметить, что оне не неадекватили, когда мы их дернули 2:1, в отличии от русских.

← Сtrl 12 Ctrl →