Jan 3, 2014

დელეგატები (3/5) - BubbleSorter ალგორითმი


დღეს მე მინდა ყურადღება გავამახვილო ერთ-ერთ ძლიერ და პოპულარულ ალგორითმზე, რომელიც ჩემი აზრით საჭიროა, რომ ყველამ იცოდეს და ესმოდეს მისი მუშაობის პრინციპი ამ სფეროში. ამ ალგორითმს ეწოდება BubbleSorter ალგორითმი და ვაპირებ მის გარჩევას და შემდეგ უკვე მოდიფიცირებას დელეგატებისა და ზოგადი ტიპის გამოყენებით. ვფიქრობ, რომ საკმაოდ საინტერესო გაკვეთილი უნდა გამოვიდეს და მაშინ დავიწყებ.

Dec 31, 2013

დელეგატები (2/5) - გამოყენება

ქვემოთ მოცემული მაგალითი იყენებს toString() მეთოდს. მაგალითი საკმაოდ გრძელი გზაა ამ მეთოდი int ტიპისთვის გამოსაყენებლად.
class Program
    {
        private delegate string GetString();

        static void Main()
        {
            int num = 40;
            GetString Fmethod = new GetString(num.ToString);
            Console.Write("String -> {0}", Fmethod());
        }
    }

Dec 28, 2013

დელეგატები (1/5) - შესავალი


მიუხედავად იმისა, რომ ჩემი წინა პოსტები C# შეიცავდა დელეგატის გამოყენების ინსტრუქციებს, ახლა გადავწყვიტე ის რაც შეიძლება ზოგმა არ იცოდეს ავხსნა და ამით უფრო გასაგები გავხადო ჩემს მიერ დაწერილი წინა პოსტები, რომლებიც იყენებდნენ დელეგატებს, როგორც მეორეხარისხოვან ობიექტებს. ერთი სიტყვით, ეს პოსტი არის დასაწყისი დელეგატების და შევეცდები რაც შეიძლება ღრმად მოვიცვა ისინი.

Dec 14, 2013

დელეგატები (4/5) - Func და Action


 
ეს ორი ტიპის დელეგატი ძალიან აადვილებს დელეგატების გამოყენებას ზოგადად და ზუსტად ჯდება lambda Expression ების მოთხოვნილებაში, რომელიც წინა პოსტში მიმოვიხილე. ჩემი აზრით, ისინი ავსებენ ერთმანეთს და უფრო კომფორტულად ხდება მათი ერთობლივად გამოყენება. ასევე ყველა სხვდასხვა ტიპის მეთოდისათვის რომ არ მოგიწიოთ სხვადასხვა დელეგატის განსაზღვრა სხვადასხვა პარამეტრისა და დასაბრუნებელი ტიპით, უბრალოდ საჭიროა ამ ორი ხელსაყრელი დელეგატის ტიპის გამოყენება. იმის გასაგებად თუ რატომ შემოგვთავაზეს C# ორი სახის დელეგატი, უნდა ვნახოთ რომელიც დელეგატი რა სპეციალიზაციით გამოიყენება.

Dec 13, 2013

Lambda Expressions


Lambda expressions არის ძალიან კარგი თვისებაა C# 3.0 ისა, ხოლო ასევე ის შეიძლება იყოს დიდი საფრთხის შემცველი იმისათვის, ვინც არ იცი როგორ გამოიყენოს შესაბამისად ისინი. ეს პოსტი იმათთვის იქნება გასაგები ვინც იცის თუ რა არის დელეგატი და როგორ გამოიყენება ის. C# იყენებს ახალ სინტაქსს, რომლითაც კოდის წერა უფრო დახვეწილი, ლამაზი და ერთგვარად ძლიერი ხდება. ჩვენ გვქონდა მაგალითი წინა პოტიდან, სადაც გამოვიყენე ანონიმური მეთოდი, ახლა ცოტა შევცვალოთ ეს ყველაფერი.

Dec 12, 2013

ანონიმური მეთოდები


თუ არაფერი გსმენიათ ანონიმურ მეთოდებზე, ეს იმას ნიშნავს, რომ დელეგატის გამოსაყენებლად საჭირო იყო ისეთი მეთოდების გამოყენება, რომელსაც უნდა ჰქონოდა მკაფიოდ განსაზღვრული ხელწერა (დასაბრუნებელი ტიპი, პარამეტრების ტიპები და ოდენობა). სინამდვილეში კი დელეგატის გამოსაყენებლად არსებობს მეორე ალტერნატიული გზაც - ანონიმური მეთოდი. ანონიმური მეთოდი არის კოდის ბლოკი, რომელსაც უფრო არგუმენტი ეთქმის თავის თავზე და როგორც არგუმენტი ისე გადის დელეგატში.

Dec 9, 2013

WPF - 7 (სტილები და რესურსები)


WPF ში შესაძლებელია თითოეულ ელემენტს შევუცვალოთ თვისება, როგორიცაა სიმაღლე, ფონტის ფორმა, ტიპი, მოცულობა და სხვა. მაგალითისთვის, რომ ავიღოთ ღილაკი მისი დიზაინის გაკეთება შესაძლებელია შემდეგი კოდით, რომელიც ყველაფერს მაინც ბოლომდე ვერ ფარავს.
<Button Height="25" Width="120" Background="Blue" Content="დამაჭირე"/>
ეს ყველაფერი მართლაც ძლიერი იარაღია, მაგრამ როდესაც აპლიკაციაში სულ მცირე ხუთი ღილაკია და ყველა ღილაკისთვის დახვეწილი დიზაინის გაკეთება გვინდა, რომელშიც საკმაოდ ბევრი რამ მეორდება, თითოეულის ხელით გაწერა უხერხულობასა და კოდის გადიდებას იწვევს, რის შემდეგაც იწყება თავის ტკივილები და ერთი ხაზის შეცვლას მოსდევს მთლიანი დიზაინის შეცვლის მოთხოვნა, რაც არც ისე მარტივია ასეთ დაქსაქსულ კოდში, ამიტომ გთავაზობთ გზას, რომელიც მოახდენს დაწერილი სტილების ლოკალიზებას და რაც შეიძლება შემოკლებას, რაც კოდის ხელახლა გამოყენებასაც უზრუნველყოფს და უფრო მოქნილს ხდის მთლიანად სისტემას.

Dec 7, 2013

WPF - 6 (Layout)

აპლიკაციის განლაგების განსაზღვრისთვის შეგიძლიათ გამოიყენოთ კლასი, რომლიც მემკვიდრეა Panel კლასისა. რამდენიმე განლაგების კონტეინერებია ხელმისაწვდომი, რომლებსაც მე განვიხილავ. განლაგების კონტეინერს ესაჭიროება ჩაატაროს ორი დავალება: გაზომოს და დაალაგოს (measure და arrange). გაზომვით კონტეინერი „ეკითხება“ შვილ კონტროლებს თუ რამდენი ადგილი ესაჭიროებათ მათ. რადგან შვილის მიერ შეთავაზებული ადგილი შეიძლება არ იყოს კონტეინერში მოთავსებადი (ჩატევადი), ამის შემდეგ კონტეინერი წყვეტს, თუ როგორ დაალაგოს შვილეული კონტროლები ოპტიმალურად.

Dec 5, 2013

WPF - 5 (კონტროლები)


WPF ში შესაძლებელია ასობით კონტროლის გამოყენება. ყველა მათგანი რაღაცით გამოირჩევა და აქვს რაღაც დანიშნულება, რაც მათ ხდის უნიკალურს, მაგრამ ძირითადად მაინც ხდება ერთი სიის ჩამოყალიბება, სადაც ყველა კონტროლი არ შედის და ამ სიის წევრები ყველაზე ხშირად გამოყენებული კონტროლებია. უკეთესად გასაგებად, შეგვიძლია განვიხილოთ კონტროლები, რომლებიც დაყოფილია შემდეგ ჯგუფებად.

Dec 4, 2013

WPF - 4(ფუნჯები)

ამ ნაწილში ავხსნი თ როგორ შეგვიძლია გამოვიყენოთ ფუნჯები WPF ში უკანა და წინა ხედისთვის ფერის მისაცემად. ფუნჯები თავის მხრივ იყოფიან რამდენიმე ნაწილად და ვაპირებ თითოეულ მათგანს შევეხო იმ დონეზე, რომ იყოს გასაგები, შემდეგ კი იმპროვიზაციას შეგიძლიათ მიმართოთ, სხვადასხვა კომბინაციების გამოყენებით და სასურველი შედეგის მისაღებად. დავიწყოთ ფუნჯების ვარიაციების განხილვა