# Hilfe



## julia1997 (14. Jun 2016)

Welches Pattern erkennt ihr hier?

Danke, 
Julia

```
public interface IStringChecker {

    public boolean check(String toCheck);
   
}
```


----------



## Facebamm (14. Jun 2016)

Das ist nen Interface, ist sowas wie in der Art eine Bauplanes von einem Haus, indem du das Grundgerüst definierst.


```
public interface IStringChecker {
     public boolean check(String toCheck);
}
//Dein Haus was du den Bauplan Übergibst.
public class Example implements IStringChecker {

    @Override
    public boolean check(String toCheck) {
        // TODO Auto-generated method stub
        return false;
    }
}
//Example 2

public class HausBau implements BauPlan {

    @Override
    public boolean CheckBodenPressWert(String toCheck) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override //Bedeuet das du die Klasse neu Übeschreiben kannst. 
    public void Fundament(String BetonArt) {
        // TODO Auto-generated method stub
       
    }
}



public interface BauPlan {
    int Hoehe = 50,Breite = 30;
    public boolean CheckBodenPressWert(String toCheck);
    public void Fundament(String BetonArt);
}

//Example 3


public class Human {
    private String NAME;
    public Human(String Name)
    {
        NAME = Name;
    }
   
    public void sayHello()
    {
        System.console().printf("Hallo, ich bin " + NAME);
    }
}

public class SuperHuman extends Human
{
    public SuperHuman(String Name) {
        super(Name);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void sayHello()
    {
        System.console().printf("Hallo, ich bin SuperHeld " + NAME);
    }
}
```


----------



## julia1997 (14. Jun 2016)

Wow danke super erklärt!


----------



## Facebamm (14. Jun 2016)

Wirklich ? 
thx  

wenn du TeamSpeak hast, könnte ich dir mehr zeigen bzw erklären


----------



## thecain (14. Jun 2016)

Das Interface pattern? kannte ich noch gar nicht.... Ein Teil von einem Flyweight oder ein Filter oder oder oder...
wäre möglich... aber ist ziemlich wenig code um das so sagen zu können...


----------



## Meniskusschaden (14. Jun 2016)

Ich kann mir auch nicht vorstellen, dass interface die richtige Antwort ist. Jedenfalls nicht, wenn mit Pattern hier Entwurfsmuster gemeint sind. Ich finde die Fragestellung zu ungenau. Mir wäre als erstes das strategy-Muster eingefallen.


----------



## Facebamm (14. Jun 2016)

Du kannst das ganze auch ganz anders aufziehen (Das geht dann in Objekt Orientierung)

```
public interface TalkPowerItems {
    public void SayHello();
    public void SayBye();
    public void SayHelloWithOutName();
}

public class Human implements TalkPowerItems{
    private String NAME;
    public Human(String Name)
    {
        NAME = Name;
    }
    @Override
    public void SayHello() {
        // TODO Auto-generated method stub
        System.console().printf(String.format("Hello, my name is %s", NAME));
    }
    @Override
    public void SayBye() {
        // TODO Auto-generated method stub
        System.console().printf("GoodBye!");
    }
    @Override
    public void SayHelloWithOutName() {
        // TODO Auto-generated method stub
        System.console().printf("Hello!");
    }
   
}


public class SuperHuman extends Human
{
    private String NAME;
    public SuperHuman(String Name) {
        super(Name);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void SayHello() {
        // TODO Auto-generated method stub
        System.console().printf(String.format("Hello, i'm the king %s", NAME));
    }
    @Override
    public void SayBye() {
        // TODO Auto-generated method stub
        System.console().printf("GoodBye! My humans!");
    }
    @Override
    public void SayHelloWithOutName() {
        // TODO Auto-generated method stub
        System.console().printf("Stay for me my humans");
    }
   
}
```


----------



## thecain (14. Jun 2016)

Strategy macht auch Sinn... Filter kam mir in den Sinn wegen dem boolean return, für Flyweight ist eine klasse dann halt doch gar wenig... Daraus kann man einfach fast alles machen.

Die Beispiele von @Facebamm zielen aber mMn am Thema Pattern vorbei


----------



## mrBrown (14. Jun 2016)

thecain hat gesagt.:


> Die Beispiele von @Facebamm zielen aber mMn am Thema Pattern vorbei


Und an gutem CodeStil^^


----------



## Facebamm (14. Jun 2016)

System.console().printf <= Ich weiß, das es veraltet ist und zweiten sind es examples
und wo ist das schlechter "CodeStil" ?


----------



## thecain (14. Jun 2016)

eine nicht Konstante uppercase geschrieben
Methoden mit Grossbuchstaben begonnen

und wenn du es weisst, macht es das eher schlimmer als besser.

Um nur mal das grobe zu nennen


----------



## mrBrown (15. Jun 2016)

String NAME doppelt, der von SuperHuman wird nie gesetzt...

Grad bei Beispielen sollte man doch auf guten Stil achten - das sollen sich schließlich andere ein Beispiel dran nehmen.


----------



## Facebamm (15. Jun 2016)

Der Beitrag war 53min offen ohne Antwort. 
Jetzt kommt einer Postet etwas. 
Und jetzt sind alle hier. Anstatt es vorher richtig zu Posten und sich jetzt über den Poster Herzumachen.
Ok, muss sagen habt nicht unrecht, aber dann wartet doch nicht auf jemanden hier her komm und Clown spielt ... 
Und ich glaub mal, sie wird es nie wieder brauchen, denn es ist in dem "Hausaufgaben" Channel gelandet. 
#werd berichtigen


----------



## Facebamm (15. Jun 2016)

https://de.wikipedia.org/wiki/Strategie_(Entwurfsmuster) :W


----------



## julia1997 (15. Jun 2016)

Es geht um Entwurfsmuster bei der Hausübung  Leider gibt es nicht mehr Code dazu, nur diesen Ausschnitt.. 

lg


----------



## Meniskusschaden (15. Jun 2016)

Dann finde ich das Strategie-Pattern plausibel, was nicht ausschliesst, dass vielleicht noch andere Entwurfsmuster in Betracht kommen.

Hier ist ein kurzes Implementierungsbeispiel für IStringChecker. Das Prüfverhalten von stringChecker lässt sich beliebig verändern, indem man eine passende Strategie in Form einer konkreten IStringChecker-Instanz zuweist. Die Methode checkStrings() muss dafür nicht verändert werden:

```
public class StringCheckerTest {
    private static IStringChecker stringChecker;
   
    public static void main(String[] args) {
        System.out.println("Enthält nur Ziffern?");
        stringChecker = new ContainsJustDigitsChecker();
        checkStrings();
       
        System.out.println("\nBeginnt mit einem Grossbuchstaben?");
        stringChecker = new StartsWithUppercaseChecker();
        checkStrings();
    }
   
    public static void checkStrings () {
        System.out.println(stringChecker.check("12drei"));
        System.out.println(stringChecker.check("123"));
        System.out.println(stringChecker.check("hallo"));
        System.out.println(stringChecker.check("Hallo"));
    }
}

class ContainsJustDigitsChecker implements IStringChecker {
    @Override
    public boolean check(String toCheck) {
        for (char c : toCheck.toCharArray()) {
            if (!Character.isDigit(c)) {
                return false;
            }
        }
        return true;
    }
}

class StartsWithUppercaseChecker implements IStringChecker {
    @Override
    public boolean check(String toCheck) {
        return toCheck.length() > 0 && Character.isUpperCase(toCheck.charAt(0));
    }
}
```


----------



## julia1997 (15. Jun 2016)

Nun habe ich weiteren Text zum String Checker erhalten. Ändert sich das Design Pattern nun? 





> In dieser Aufgabe geht es darum, einen String Filter um das Interface IStringChecker herum zu bauen. Das Interface enth ̈alt nur eine einzige Methode, check.
> 
> 
> public interface IStringChecker {
> ...


----------



## Meniskusschaden (15. Jun 2016)

Das klingt jetzt doch eher nach dem Filter-Pattern, das @thecain schon erwähnt hat, wobei ich meine, dass man hier das Interface IStringChecker zusammen mit den Klassen MinimumLengthChecker und CharacterClassChecker auch als Strategy-Pattern ansehen kann, das in dem komplexeren Filter-Pattern enthalten ist.


----------



## julia1997 (15. Jun 2016)

Danke


----------

