MatLab 11 04 2016

classdef prostokat

    properties

        a; %Długość podstawy

        b; %Wysokość

        x; %Punkt x przekatnej

        y; %Punkt y przekatnej

        R=0; %Czerwony

        G=0; %Zielony

        B=0; %Niebieski

        Rk=0; %Czerwony, krawedz

        Gk=0; %Zielony, krawedz

        Bk=0; %Niebieski, krawedz

        P;   %Pole

        O;   %Obwod

        alfa; %Kąt pomiędzy bokiem a a osią x

        grubosc_linii;

        kolor=[0,0,0];

        kolor_krawedzi=[0,0,0];

    end

    

    properties(Constant = true)

        xmin= -20;

        ymin= -20;

        xmax= 20;

        ymax= 20;

    end

    

    methods

        function obj=prostokat(varargin)

            switch nargin

                case 4

                    if((isa(varargin{3},'double'))&&(isa(varargin{4},'double'))&&(isa(varargin{1},'double'))&&(isa(varargin{2},'double')))

                        if(varargin{1}>=0)&&(varargin{2}>=0)

                            obj.a = varargin{1};

                            obj.b = varargin{2};

                            obj.x = varargin{3};

                            obj.y = varargin{4}; 

                            obj.kolor = rand(1,3);

                            obj.kolor_krawedzi = rand(1,3);


                        end

                    end

                    if((isa(varargin{3},'char'))||(isa(varargin{4},'char'))||(isa(varargin{1},'char'))||(isa(varargin{2},'char')))

                        error('Zmienne a, b, x, y nie moze byc typu znakowego')

                    end

                    if((varargin{1}<=0)||(varargin{2}<=0))

                        error('Boki nie moga miec ujemnej badz zerowej wartosci')     

                    end

                    

                case 2

                    if((isa(varargin{1},'double'))&&(isa(varargin{2},'double')))

                        if(varargin{1}>=0)&&(varargin{2}>=0)

                            obj.a=varargin{1};

                            obj.b=varargin{2};

                            obj.x=rand*10;

                            obj.y=rand*10;

                            obj.kolor=rand(1,3);

                            obj.kolor_krawedzi=rand(1,3);

                        end

                    end

                    if((isa(varargin{1},'char'))||(isa(varargin{2},'char')))

                        error('Zmienne a, b nie moze byc typu znakowego')

                    end

                    if((varargin{1}<=0)||(varargin{2}<=0))

                        error('Boki nie moga miec ujemnej badz zerowej wartosci')     

                    end

                    

                case 0

                    obj.a=rand*100;

                    obj.b=rand*100;

                    obj.x=rand*10;

                    obj.y=rand*10;

                    obj.kolor=rand(1,3);

                    obj.kolor_krawedzi=rand(1,3);


                case 5

                    if((isa(varargin{3},'double'))&&(isa(varargin{4},'double'))&&(isa(varargin{1},'double'))&&(isa(varargin{2},'double')))

                        if(varargin{1}>=0)&&(varargin{2}>=0)

                            obj.kolor=varargin{5};

                            if((1>=obj.R)&&(obj.R>=0)&&(obj.G>=obj.G)&&(obj.G>=0)&&(1>=obj.B)&&(obj.B>=0)) 

                                obj.a=varargin{1};

                                obj.b=varargin{2};

                                obj.x=varargin{3};

                                obj.y=varargin{4};

                                obj.kolor=varargin{5};

                                obj.kolor_krawedzi=rand(1,3);

                            end

                        end

                    end

                    if((isa(varargin{3},'char'))||(isa(varargin{4},'char'))||(isa(varargin{1},'char'))||(isa(varargin{2},'char')))

                        error('Zmienne a, b, x, y nie moze byc typu znakowego')

                    end

                    if((varargin{1}<=0)||(varargin{2}<=0))

                        error('Boki nie moga miec ujemnej badz zerowej wartosci')     

                    end

                    if((1<obj.R)&&(obj.R<0)&&(1<obj.G)&&(obj.G<0)&&(1<obj.B)&&(obj.B<0))

                        error('Kolor {R, G, B} musi być podany w przedzialach od 0 do 1')

                    end

                case 6

                    if((isa(varargin{3},'double'))&&(isa(varargin{4},'double'))&&(isa(varargin{1},'double'))&&(isa(varargin{2},'double')))

                        if(varargin{1}>=0)&&(varargin{2}>=0)

                            obj.kolor=varargin{5};

                            if((1>=obj.R)&&(obj.R>=0)&&(1>=obj.G)&&(obj.G>=0)&&(1>=obj.B)&&(obj.B>=0))

                                obj.kolor_krawedzi=varargin{6};

                                if((1>=obj.Rk)&&(obj.Rk>=0)&&(1>=obj.Gk)&&(obj.Gk>=0)&&(1>=obj.Bk)&&(obj.Bk>=0))

                                    obj.a=varargin{1};

                                    obj.b=varargin{2};

                                    obj.x=varargin{3};

                                    obj.y=varargin{4};

                                    obj.kolor=varargin{5};

                                    obj.kolor_krawedzi=varargin{6};

                                end

                            end

                        end

                    end

                    if((isa(varargin{3},'char'))||(isa(varargin{4},'char'))||(isa(varargin{1},'char'))||(isa(varargin{2},'char')))

                        error('Zmienne a, b, x, y nie moze byc typu znakowego')

                    end

                    if((varargin{1}<=0)||(varargin{2}<=0))

                        error('Boki nie moga miec ujemnej badz zerowej wartosci')     

                    end

                    if((1<obj.R)&&(obj.R<0)&&(1<obj.G)&&(obj.G<0)&&(1<obj.B)&&(obj.B<0))

                        error('Kolor {R, G, B} musi być podany w przedzialach od 0 do 1')

                    end

                    if((1<obj.Rk)&&(obj.Rk<0)&&(1<obj.Gk)&&(obj.Gk<0)&&(1<obj.Bk)&&(obj.Bk<0))

                        error('Kolor krawedzi {Rk, Gk, Bk} musi być podany w przedzialach od 0 do 1')

                    end

                    

                otherwise

                    error('Prosze podac 0, 2, 4, 5, lub 6 argumentow wejsciowych')

            end

            

        end

        

        function obj=display(obj)

            lancuch=sprintf('Obiekt klasy prostokat, o bokach a=%4.2f, b=%4.2f, środku w punkcie (%4.2f, %4.2f)',obj.a, obj.b, obj.x, obj.y);

            disp(lancuch);

        end

        

        function obw=get.O(obj)

            obw=(2*obj.a)+(2*obj.b);

        end

        

        function pol=get.P(obj)

            pol=obj.a*obj.b;

        end

        

        function obj=set.O(obj,~)

            disp('Nie mozna zmienic wartosci obwodu obiektu');

        end

        

        function obj=set.P(obj,wartosc)

            disp('Nie mozna zmienic wartosci pola obiektu');

        end

        

        function obj=set.a(obj,wartosc)

            if(wartosc<=0)

               disp('Wartosc boku nie moze byc ujemna'); 

            else

               obj.a=wartosc;

            end

        end 

        

        function obj = plus(obj1,obj2)

                obj.a = obj1.a + obj2.a;

                obj.b = obj1.b + obj2.b;

                obj.x = (obj1.x + obj2.x)/2;

                obj.y = (obj1.y + obj2.y)/2;

                obj.kolor = (obj1.kolor + obj2.kolor)/2;

                obj.kolor_krawedzi = (obj1.kolor_krawedzi + obj2.kolor_krawedzi)/2;

                

                obj = prostokat(obj.a, obj.b, obj.x, obj.y, obj.kolor, obj.kolor_krawedzi);

        end

                

        function rysuj(obj)

            x1 = obj.x - (obj.a/2);

            x2 = obj.x + (obj.a/2);

            x3 = x1;

            x4 = x2;

            X = [x1, x2, x4, x3];

            

            y1 = obj.y - (obj.b/2);

            y2 = y1;

            y3 = obj.y + (obj.b/2);

            y4 = y3;

            Y = [y1, y2, y4, y3];

            

            fill(X, Y, obj.kolor);

            hold on;

            X = [x1, x2, x4, x3, x1];

            Y = [y1, y2, y4, y3, y1];

            

            plot(X, Y, 'Color', obj.kolor_krawedzi, 'LineWidth', 2);

        end    

    end

        

    methods(Static = true)

        function wyjscie = zmianaStatyczna(dane)

            persistent zmienna;

            if nargin>0

                zmienna = dane;

            end

            wyjscie = zmienna;

        end   

    end   

end




Wyszukiwarka

Podobne podstrony:
ECR 29 11 04(3)
ip 11 04
6 Miedzynarodowy transfer wyklad 11 04 2012 id 43355
Odzysk i recykling 13 11 04
11 04
11 04 Montazowy sprzet pomocniczy haki zawiesia trawersy stezenia montazowe
Wykład 11 (04.12.07), toxycologia
farmakologia 11 04 01
04.11, 04
11.04.2011
rat med 11 04 06
jaja wędzonka=04 04 2016
Geodezja wyklad 6 instrumenty geodezyjne (11 04 2011)(1)
2011.11.04 - Czynnosc bioelektryczna mozgu - Kopia, Fizjologia człowieka, wykłady
wykład z 11.04., I rok, Podstawy zarządzania
G P C 11 04 2013
05 11 04 kol
Kształtowanie ustroju rolnego 11.04.2003
ECR 29 11 04(2)

więcej podobnych podstron